编写一个计算组合数的函数combinNum(int m,int n)

发布网友

我来回答

4个回答

热心网友

#include <stdio.h>

unsigned long combinNum(int m,int n)

{

 int i;

 unsigned long x=1;

 if(n<0||n>m)return 0;

 for(i=m;i>m-n;i--)

   x=x*i/(m+1-i);

 return x;

}

void main()

{

 int m,n;

 scanf("%d%d",&m,&n);

 printf("%ld\n",combinNum(m,n));

}

热心网友

下面的C语言程序,fac函数用递归求n!,combinNum函数多次调用fac即可,应该算是非常简单的实现方法了:
long fac(int n)
{
if (n==0)
return 1;
else
return n*fac(n-1);
}
long combinNum(int m,int n)
{
return fac(m)/(fac(n)*fac(m-n));
}

热心网友

如果你不是高中搞比赛的,不要考虑时间与空间可以这样:
用C++:
#include "iostream.h"
int plus(int x,int y)
{
int k=1,i;
for (i=1;i<=x;i++) k=k*i;
for (i=1;i<=y;i++) k=k/i;
for (i=1;i<=x-y;i++) k=k/i;
return k;
};
void main()
{ int m,n;
cin>>m>>n;
cout<<plus(m,n);
};
hust phy

热心网友

#include <stdio.h>

typedef unsigned uint;
uint CC(uint m, uint n) // count for combinations
{
uint Amn = 1;
uint Ann = 1;

for(; n > 0; Amn *= m--, Ann *= n--);

return Amn / Ann;
}

int main()
{
printf("%d\n", CC(4,2));
}

参考资料:http://zhidao.baidu.com/question/377794.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com