long?long?permutation(int?m,?int?n)
創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為歙縣等服務(wù)建站,歙縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為歙縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
{
int?i;
long?long?result?=?1;
for?(i?=?m;?i??m?-?n;?i--)
result?*=?i;
return?result;
}
這個函數(shù)計算A(n,m),即n(n-1)(n-2)……(n-m+1)
#includestdio.h
int?com(int?m,int?n)//m中取n個
{
int?i,j,sum=1;
for?(i=m,j=0;jn;j++,i--)
{
sum=sum*i/(j+1);
}
return?sum;
}
int?main()
{
int?i;
i=com(5,3);
printf("%d",i);
return?0;
}
答:因為解決組合問題要用到階乘,計算機(jī)系統(tǒng)不可能直接計算較大數(shù)的階乘。如:本機(jī): ULLONG_MAX = 18446744073709551615 為20位數(shù),最大可計算 20! = 2432902008176640000 為19位數(shù),以上是64位計算機(jī)、windows7(32位)、gcc10編譯器的情況,所以不可能解決輸入任意多個元素的問題。必須根據(jù)自己的系統(tǒng)來決定最多可以求多少元素的組合問題。