小新 <masscadi.bbs@bbs.ntu.edu.tw> 次寫入到主題
<000j6f$tyR@bbs.ntu.edu.tw>...
> 如何寫一程式如何寫一程式
> 如何寫一程式將一組合問題將C(10,3)的
> 所有120種情況存於陣列A[120][10]中?
>
> 例如,第1種情況為1110000000
> 2 1011000000
> 3 1001100000...等等120種情況
> 存於陣列A[120][10]中
> 或是從哪本書可以找到此演算法?謝謝!
>
>
>
int cnt, i,j,k;
cnt = 0;
memset(a,0,sizeof(a));
for(i=0;i<8;i++) {
for(j=i+1;j<9;j++) {
for(k=j+1;k<10;k++) {
a[cnt][i]=1;
a[cnt][j]=1;
a[cnt][k]=1;
cnt++;
}
}
}
Loop中個數驗算:
8 i 8
cnt=Sigma(Sigma(k)) = Sigma((i^2+i)/2)
i=1 j=1 i=1
= (n*(n+1)*(2*n+1)/6+n*(n+1)/2)/2 , n=8
= (8*9*17/6 + 8*9/2)/2
= 2*3*17 + 2*9 = 102+18 = 120
-- 市隱
有些東西, 書本不提是因為太過簡單...