首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

錯排問題:6 支筆帽全部裝錯的排列數計算(遞迴公式)

     編輯:程式設計綜合問答

題目

6 支筆,筆身與筆帽顏色一一對應,求全部筆身裝錯筆帽的排列數。選項:A.265 B.266 C.267 D.268

數學模型:錯排數

設 D(n) 為 n 個元素全錯位的排列數(Derangement)。遞迴公式:

D(1) = 0
D(2) = 1
D(n) = (n-1) * [D(n-1) + D(n-2)]  (n >= 3)

逐步計算

  • D(1)=0
  • D(2)=1
  • D(3)=2*(1+0)=2
  • D(4)=3*(2+1)=9
  • D(5)=4*(9+2)=44
  • D(6)=5*(44+9)=265

答案

265,對應選項 A。

程式碼實作 (C)

static int D(int n) {
    if (n == 1) return 0;
    if (n == 2) return 1;
    return (n-1) * (D(n-1) + D(n-2));
}
// 呼叫 D(6) 得 265

通項公式 (補充)

D(n) = n! * Σ_{k=0..n} (-1)^k / k!,近似 n!/e。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved