這道題目其實是古老的伯努利-尤拉的裝錯信封的問題,也就是錯排問題,那麼什麼是錯排呢?
錯排:錯排問題是組合數學中的問題之一。考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。 n個元素的錯排數記為d(n)。 研究乙個排列錯排個數的問題,叫做錯排問題或稱為更列問題。
錯排的推導方法有列舉法(排列數少),遞推法等等。
遞推:d(1)=0,d(2)=1。
一:當n≥3時,不妨設n排在了第k位,其中k≠n,有n-1種排法。
二:現在考慮k的情況。
(1).當k排在第n位時,除了n和k以外還有n-2個數,其錯排數為d(n-2)。
(2).當k不排在第n位時,那麼將第n位重新考慮成乙個新的「第k位」,這時的包括k在內的剩下n-1個數的每一種錯排,都等價於只有n-1個數時的錯排(只是其中的第k位會換成第n位)。其錯排數為d(n-1)。
**高階實現:
#include
using namespace std;
long
long
intd
(int n)
return a[n];}
intmain()
return0;
}
**的簡單實現:
#include
using namespace std;
long
long
intd
(int n)
else
if(n==2)
else
if(n>=3)
return a;
}int
main()
return0;
}
遞推 SDUT 三國佚事 巴蜀之危
description 話說天下大勢,分久必合,合久必分。卻道那魏蜀吳三國鼎力之時,多少英雄豪傑以熱血譜寫那千古之絕唱。古人誠不我欺,確是應了那句 一將功成萬骨枯 是夜,明月高懸。諸葛丞相輕搖羽扇,一臉愁苦。原來是日前蜀國戰事吃緊,丞相徹夜未眠,奮筆急書,於每個烽火台寫下安排書信。可想,這戰事多變,...
三國佚事 巴蜀之危
problem description 話說天下大勢,分久必合,合久必分。卻道那魏蜀吳三國鼎力之時,多少英雄豪傑以熱血譜寫那千古之絕唱。古人誠不我欺,確是應了那句 一將功成萬骨枯 是夜,明月高懸。諸葛丞相輕搖羽扇,一臉愁苦。原來是日前蜀國戰事吃緊,丞相徹夜未眠,奮筆急書,於每個烽火台寫下安排書信。可...
三國佚事 巴蜀之危
time limit 1000ms memory limit 65536kb problem description 話說天下大勢,分久必合,合久必分。卻道那魏蜀吳三國鼎力之時,多少英雄豪傑以熱血譜寫那千古之絕唱。古人誠不我欺,確是應了那句 一將功成萬骨枯 是夜,明月高懸。諸葛丞相輕搖羽扇,一臉愁苦...