- 註冊時間
- 2007-12-23
- 最後登錄
- 2016-12-14
- 主題
- 查看
- 積分
- 30
- 閱讀權限
- 20
- 文章
- 70
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
巴斯卡三角形:
1
1,1
1,2,1
1,3,3,1
1,4,6,4,1
相當於:
C(0,0)
C(1,0), C(1,1)
C(2,0), C(2,1), C(2,2)
C(3,0), C(3,1), C(3,2), C(3,3)
...................
又 C(n,k)
= n! / (k!*(n-k)!)
= n*(n-1)*(n-2)*....*(k+1) / (n-k)!
= n*(n-1)*(n-2)*....*(k+1) / 1*2*3*...*(n-k)
= (n/1)*((n-1)/2)*((n-2)/3)*...((k+1)/(n-k))
程式 main 中:
int N, K, n,r,i;
cout << "請輸入N:";
cin >> N;
cout << "請輸入K:";
cin >> K;
// 二項式係數
cout << "C(N,K)=" << Bin(N,K); //只是印出 C(N,K) 的值
for (n=0;n<=N;n++) { // 決定印出幾層的巴斯卡三角形
for (r=0;r<=n;r++) { // 決定印出該層巴斯卡三角形的每個 C(N,K) 數值
long nCr = 1;
for(i=1;i<=r;i++) {
// 計算 C(N,K) 值,
//如上所推理的:C(n,k) = (n/1)*((n-1)/2)*((n-2)/3)*...((k+1)/(n-k))
//第一個數:n/1 為 (n-1+1)/1,第二個數:(n-1)/2 為 (n-2+1)/2
//第三個數:(n-2)/3 為 (n-3+1)/3.....
//依此類推,第i個數: (n-i+1)/i
//C(n,k)為第一個數*第二個數*....*第i個數,所以為累乘
nCr = nCr * (n-i+1)/i;
}
cout << nCr;
}
cout << "\n";
}
system ("pause");
return 0 ; |
-
總評分: 威望 + 2
查看全部評分
|