題目:6支筆身筆帽顏色一一對應,求全部錯蓋(錯排)的排列數。選項:265/266/267/268。
遞歸公式:D(1)=0, D(2)=1D(n) = (n-1) * [D(n-1) + D(n-2)] (n≥3)
| n | D(n) | 計算過程 |
|---|---|---|
| 1 | 0 | 基例 |
| 2 | 1 | 基例 |
| 3 | 2 | 2*(1+0)=2 |
| 4 | 9 | 3*(2+1)=9 |
| 5 | 44 | 4*(9+2)=44 |
| 6 | 265 | 5*(44+9)=265 |
答案:**A. 265**
int derangement(int n) {
if (n == 1) return 0;
if (n == 2) return 1;
return (n-1) * (derangement(n-1) + derangement(n-2));
}
// 主函數調用 derangement(6) 輸出 265
int derangement_iter(int n) {
if (n == 1) return 0;
if (n == 2) return 1;
int d1 = 0, d2 = 1, dn;
for (int i = 3; i <= n; i++) {
dn = (i-1) * (d2 + d1);
d1 = d2;
d2 = dn;
}
return d2;
}