日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一般排列组合计算

發(fā)布時(shí)間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一般排列组合计算 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.排列組合公式

若按照階乘的方式來計(jì)算,在數(shù)值較大時(shí)可能發(fā)生溢出。 觀察可以發(fā)生C(n,r)的分子分母都為r項(xiàng),可以把它們的每一項(xiàng)分別進(jìn)行計(jì)算。在編程時(shí)要注意除不進(jìn)時(shí),不要除,把分子分母分別乘到下一個(gè)處理項(xiàng)中。 同時(shí) C(n,r)=C(n,n-r) 例:每行輸入兩個(gè)數(shù)分別代表上面的n,r。若n,r=0則終止。 /* Note:Your choice is C IDE */ #include "stdio.h" void main() {int n,r;// int count=1;int i;int a=1,b=1;while(scanf("%d%d",&n,&r)&&n){if(r>n-r)//減小計(jì)算的項(xiàng)r=n-r;for(i=1;i<=r;i++){a*=n-i+1;b*=i;if(a%b==0){a/=b;b=1;} }printf("%d\n",a/b);a=1,b=1; }}
2

2.二項(xiàng)式系數(shù)公式,即降階公式

C(n,r)=C(n-1,r)+C(n-1,r-1).可以理解先從n個(gè)中選r-1個(gè),然后在n-1個(gè)中選r-1個(gè),其中一個(gè)就是被排除在n-1中的一個(gè)。所以C(i,j)=C(i-1,j)+C(i-1,j-1)而C(x,0)=1,所以C(1,1)=C(1,0)=1;C(2,1)=C(1,1)+C(1,0)=1+1=2;C(3,1)=C(2,1)+C(2,0)=2+1=3;C(3,2)=C(2,2)+C(2,1)=1+2=3;.......若用數(shù)組來存儲(chǔ)這些組合的計(jì)算,C[i][j]=C[i-1][j]+C[i-1][j-1];初始時(shí)設(shè)C[i][0]=1,(0<=i<=101) 然后雙重枚舉i,j,按上面公式計(jì)算。/* Note:Your choice is C IDE */ #include "stdio.h" #define N 110 unsigned int C[N][N];//用于存數(shù)各排序組合數(shù) void prepare() { int i,j;memset(C,0,sizeof(C));for(i=0;i<N;i++){C[i][0]=1;C[i][i]=1;}for(i=1;i<N;i++){for(j=0;j<i;j++){C[i][j]=C[i-1][j]+C[i-1][j-1]; }}}void main() {int n,m;prepare();//先離線計(jì)算各式while(scanf("%d%d",&n,&m)&&n)printf("%d\n",C[n][m]); }

轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/lin200753/article/details/33329613

總結(jié)

以上是生活随笔為你收集整理的一般排列组合计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。