錯裝信封問題

2021-06-16 21:29:25 字數 897 閱讀 5641

先看問題:

hdu有個網名叫做8006的男性同學,結交網友無數,最近該同學玩起了浪漫,同時給n個網友每人寫了一封信,這都沒什麼,要命的是,他竟然把所有的信都裝錯了信封!注意了,是全部裝錯喲!

輸入資料報含多個多個測試例項,每個測試例項占用一行,每行包含乙個正整數n(1對於每行輸入請輸出可能的錯誤方式的數量,每個例項的輸出占用一行。

2

3

1

2

正解:

#include using namespace std;

long long array[21] = ;

long long falseway(int x)

int main()

{ int n;

while(cin >> n)

{cout << falseway(n) <

分析:

可以看成遞推問題。

如果用 f(x) 表示 x 封信全部裝錯的所有情況,那麼 f(x) = (x-1)*f(x-2) + (x-1)*f(x-1);

可以理解為:每封信都有x-1種錯誤的裝法,這x-1種裝法可分為兩種情況。

第一種:這封信所裝在的信封所對應的信恰好裝在這封信所對應的信封。即這兩封信恰好互換。

第二種:這封信所裝在的信封所對應的信不是裝在這封信所對應的信封。即這兩封信不是互換。

第一種情況下只需知道剩下x-2封信全部裝錯的所有情況。

第二種情況下只需知道包括這封信所裝在的信封所對應的信在內的x-1封信全部裝錯的所有情況。

這樣就能根據前面的兩個狀態推出後面的狀態,利用遞迴我們就可以將複雜的問題簡化。如果對遞迴加上陣列記憶優化效率就會更高。

組合數學 信封錯裝問題

1 問題的提出 1 同室四人各寫一張賀年卡,先集中起來,然後每人從中拿一張別人送出的賀年卡 則四張賀年卡的不同分配方式有 a 6種 b 9種 c 11種 d 23種 2 有5個客人參加宴會,他們把帽子放在衣帽寄放室內,宴會結束後每人戴了一頂帽子回家 回家後,他們的妻子都發現他們戴了別人的帽子 問5個...

伯努利錯裝信封問題

題目描述 某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。輸入輸出格式 輸入格式 乙個信封數n n 20 輸出格式 乙個整數,代表有多少種情況。輸入輸出樣例 輸入樣例 1 複製 輸出樣例 1 複製 輸入樣例 2 複製 輸出樣例 2 複製 解 伯努利錯裝信封問...

SHU1908 裝錯信封(錯排公式)

小概率事件又發生了,而且就在我們身邊 事情是這樣的 ces 有個網名 gaoshu 的 男性同學,結交無數,最近該同學玩起了浪漫,同時給 n個每人寫了一封信,這都沒什麼,要命的是,他竟然把所有的信都裝錯了信封!注意了,是全部裝錯喲,而且居然還有一封是寫給他女朋友的情書,嘿嘿,不說了!gaoshu 同...