錯位排列:即n個有編號的人各自抽不中自己的號碼
以下證明其公式為:f(n)=(n-1)*(f(n-1)+f(n-2))
首先是第乙個人,稱為1號
1號不抽取自己,有(n-1)種抽取方法
假設1號抽中2號
有兩種情況:1、2號也抽中了1號,於是剩下n-2個自己進行錯位排列,得f(n-2)種
2、2號沒有抽中1號,則必有後面的抽中1號,於是此時將2號當作1號,即假設後面抽到的1號是2號,於是又有f(n-1)種
所有可以證得f(n)=(n-1)*(f(n-1)+f(n-2))
以下是乙個應用例項:
hd2048,也是遞迴思想
#include int main(void)
{ int n,i,k,l,a;
long long int fb[2],t;
double j;
scanf("%d",&n);
for(k=0;k還有補充一點:
即四捨五入的方法:
(int)(a+0.5)
利用了系統的截斷,可以獲得四捨五入的數!
全錯位排列
給你看道幾乎一樣的題目 五個編號為1 5的小球放進5個編號為1 5的小盒裡面,全錯位排列 即1不放1,2不放2,依次類推 一共有多少種放法 這是著名的信封問題,很多著名的數學家都研究過 瑞士數學家尤拉按一般情況給出了乙個遞推公式 用a b c 表示寫著n位友人名字的信封,a b c 表示n份相應的寫...
信封問題的錯位排列
problem a time limit 1000 ms memory limit 32 mb 64bit io format i64d submitted 64 accepted 28 submit status web board description 大家常常感慨,要做好一件事情真的不容易,...
錯位排列遞推公式推導
全錯位排列 即被著名數學家尤拉 leonhard euler,1707 1783 稱為組合數論的乙個妙題的 裝錯信封問題 裝錯信封問題 是由當時最有名的數學家約翰 伯努利 johann bernoulli,1667 1748 的兒子丹尼爾 伯努利 danidbernoulli,1700 1782 提...