某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。
輸入格式:
乙個信封數n(n<=20)
輸出格式:
乙個整數,代表有多少種情況。
輸入樣例#1
2輸出樣例#1
1輸入樣例#2
3輸出樣例#2
2用f[i]表示i個數的錯排;
第一步:考慮放第n個元素,有n-1種;
第二步:考慮第k個元素,如果第n放在了位置k,則還有a[i-1]種。否則還有a[i-2]種;
遞推公式:a[i]=(i-1)*(a[i-1]+a[i-2]);
遞推邊界:a[0]=0;a[1]=0;a[2]=1;
#include #include using namespace std;
long long int a[26]=;//超長整形警告
int main()
cout
}
洛谷 P1595 信封問題
想不到刷普及 的題目還真有收穫 解 伯努利錯裝信封問題,公式上!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 ...
P1595 信封問題
題目描述 某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。輸入格式 乙個信封數n n 20 輸出格式 乙個整數,代表有多少種情況。輸入輸出樣例 輸入 1 輸出 1 輸入 2 輸出 2 include include include include inclu...
洛谷 P1057 遞推
上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 nnn個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師再次吹哨子時,傳球停止,此時,拿著球沒有傳出去的那...