題目描述
某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。
輸入輸出格式
輸入格式:
乙個信封數n(n<=20)
輸出格式:
乙個整數,代表有多少種情況。
輸入輸出樣例
輸入樣例#1:?複製
輸出樣例#1:?複製
輸入樣例#2:?複製
輸出樣例#2:?複製
解:伯努利錯裝信封問題,公式上!
f(n)=(n-1)*(f(n-1)+f(n-2))
(n表示信封數)
【演算法分析】首先,f(0)=1, f(1)=0, f(2)=1
當n>2時,設第一封信裝在第二個信封中 (有n-1種方法)
此時若第二封信裝在第乙個信封中,則剩下的即為n-2錯排問題 (f(n-2)種方法)
若第二封信不裝在第乙個信封中,把第二封信看作與第乙個信封為一套
(與錯排意思相同),剩下的即為n-1錯排問題 (f(n-1)種方法)
得出公式:f(n)=(n-1)*(f(n-1)+f(n-2))(n表示信封數)
回溯法 伯努利裝錯信封問題
某人給6個朋友每人寫了一封信,同時寫了這6個朋友位址的信封,有多少種投放信箋的方法,使每封信與信封上的收信人都不相符?include intmain else t 0 第i封信在第i個信封,不滿足條件 if t i n 已經到最後一封信了,前面的信也都可以放到滿足條件的位上了 if t i 前面的信...
錯裝信封問題
先看問題 hdu有個網名叫做8006的男性同學,結交無數,最近該同學玩起了浪漫,同時給n個每人寫了一封信,這都沒什麼,要命的是,他竟然把所有的信都裝錯了信封!注意了,是全部裝錯喲!輸入資料報含多個多個測試例項,每個測試例項占用一行,每行包含乙個正整數n 1對於每行輸入請輸出可能的錯誤方式的數量,每個...
關於伯努利數
主要是寫這個部落格用來記錄自然數冪和與伯努利數的關係 伯努利數定義如下 b 0 1 sum nb ic i 0 於是我們有了它的遞推式 b n frac sum b ic i 有乙個經常用的東西,用來求自然數冪和 s m n sum i m s m n frac sum c b i n 1 上面的式...