问一个数学问题?

cbabyhe 2009-10-10 02:24:10
t = 0;
N = 4;
for(i=0;i<=N;i++)
{
for(j=0;j<=i;j++)
{
for(k=0;k<=j;k++)
{
for(m=0;m<=k;m++)
{
for(n=0;n<=m;n++)
{
t++;
}
}
}
}
}
t 跑出来是 126

这个t怎么能手动算出来? (t和N和循环次数之间的关系)
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiyangdn 2009-10-10
  • 打赏
  • 举报
回复
1楼的比较简单,是公式
H(N,5)=C(N+5-1,5)=C(9,5)=126
feiyangdn 2009-10-10
  • 打赏
  • 举报
回复
t等于从N个数中选择可重复的5个数的组合数
其值为
t = C(N,1)+C(N,2)*4+C(N,3)*6+C(N,4)*4+C(N,5);
其中上式中
4表示从2个数中取可重复3个数的组合数
6表示从3个数中取可重复2个数的组合数
4表示从4个树种取可重复1个数的组合数

用C(N,i)表示从N个数中选择不重复的i个数的组合数,
C(N,i) = N*(N-1)*..(N-i+1)/i! ----i!表示i的阶乘

那么,当N=5时
t = C(5,1)+C(5,2)*4+C(5,3)*6+C(5,4)*4+C(5,5)
= 5 + 5*4*4/2 + 5*4*3*6/6 + 5*4*3*2*4/24 + 1
= 5 + 40 + 60 + 20 + 1
= 126

注意N表示可取数的个数,程序中N=4,计算式中要加1
cbabyhe 2009-10-10
  • 打赏
  • 举报
回复
谢谢大家咯。
人都傻了,要给自己充电了。
xingzhe2001 2009-10-10
  • 打赏
  • 举报
回复
t = n*(n-1)*...*(n-4)
绿色夹克衫 2009-10-10
  • 打赏
  • 举报
回复
t = C(n + 5,5)

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧