int function(int n,int m)
成都創(chuàng)新互聯(lián)公司-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、綿陽(yáng)電信機(jī)房、等保安全、私有云建設(shè)等企業(yè)級(jí)互聯(lián)網(wǎng)基礎(chǔ)服務(wù),歡迎聯(lián)系:18982081108
{
int i, ret = 1;
for(i=0;im;i++)
ret *= (n-i);
return ret;
}
void main(void)
{
int n = 15, m =5;
int ret;
ret = function(15,5) / function(5,5);
printf("%d\n",ret);
}
實(shí)現(xiàn)的算法很多, 下面給出一個(gè)不需要遞歸的算法; 需要設(shè)計(jì)兩個(gè)函數(shù)。
unsigned long factorial (unsigned long n);
long long perm(unsigned long m, unsigned long n);
unsigned long factorial (unsigned long n)
{
unsigned long value = (n == 0) ? 1 : n;
while( n = 2 )
value *= --n;
return value;
}
long long perm(unsigned long m, unsigned long n)
{
if (m n)
return -1;
else
return (unsigned long) (factorial(n)/factorial(n-m));
}
只為了mn就要返回-1, 有點(diǎn)浪費(fèi)啊~~~
注意求值范圍, 如果需要可以int64擴(kuò)展。。。
double?fact(long?num)
{
for?(long?i?=?1;?num??0;?num--)
{
i?*=?num;
}????
}
int?main()
{
long?m;
long?n;
long?C;
scanf("%ld?%ld",?m,?n);
C?=?fact(n)?/?((fact(m))?*?fact(n-m));
printf("%ld",C);
return?0;
}
分享名稱:c語(yǔ)言求組合函數(shù),求組合數(shù)
本文地址:http://aaarwkj.com/article16/dsiiigg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站策劃、定制開(kāi)發(fā)、Google、小程序開(kāi)發(fā)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)