给位高手帮忙写个小程序啊。~

sunnyboychina 2006-05-18 04:32:15
求n个1和m个0排列组合的数。
如2个1和3个0(11000……)的排列组合数为10
int func(int n, int m);

谢谢各位了!~
...全文
115 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnyboychina 2006-05-19
  • 打赏
  • 举报
回复
搞定了!~
#include <stdio.h>
int order(int , int);
int factorial(int );
int main()
{
int m,n,sum;
printf("please input m,n : ");
scanf("%d%d",&m,&n);
sum = order(m,n);
printf("the sum is : %d\n",sum);
return 0;
}

int order(int i, int j)
{
return factorial(i+j)/(factorial(i) * factorial(j));
}

int factorial(int m)
{
int ret = 1;
while(m > 0)
{
ret = ret * m;
m--;
}
return ret;
}
jixingzhong 2006-05-18
  • 打赏
  • 举报
回复
也就是在 int func(int n, int m);
中计算 组合值就可以了 ....

组合值的计算可以使用递归,
公式可以查一下,
比较简单的 ~
jixingzhong 2006-05-18
  • 打赏
  • 举报
回复
楼主,你要的只是 组合的数目,
那么只要一个程序计算一下 C(n,m+n) 或者 C(m,m+n) 就可以了 ....
sharpdew 2006-05-18
  • 打赏
  • 举报
回复
哦,是组合数不是排列,因为没有顺序
如2个1和3个0(11000……)的组合数就是C(5,2)=C(5,3)=5*4/2=10
sharpdew 2006-05-18
  • 打赏
  • 举报
回复
如如2个1和3个0(11000……)的排列组合数就是C(5,2)=C(5,3)=5*4/2=10
sharpdew 2006-05-18
  • 打赏
  • 举报
回复
就是在m+n个位置,放m个0的组合数呀,C(m+n,m)呀,就这么简单!

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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