HDOJ 2048 神 上帝以及老天爺

2021-06-28 10:58:43 字數 894 閱讀 7637

題目敘述:hdu 2006'10 acm contest的頒獎晚會隆重開始了!

為了活躍氣氛,組織者舉行了乙個別開生面、獎品豐厚的**活動,這個活動的具體要求是這樣的:

首先,所有參加晚會的人員都將一張寫有自己名字的字條放入**箱中;

然後,待所有字條加入完畢,每人從箱中取乙個字條;

最後,如果取得的字條上寫的就是自己的名字,那麼「恭喜你,中獎了!」

大家可以想象一下當時的氣氛之熱烈,畢竟中獎者的獎品是大家夢寐以求的twins簽名照呀!不過,正如所有試圖設計的喜劇往往以悲劇結尾,這次**活動最後竟然沒有乙個人中獎!

我的神、上帝以及老天爺呀,怎麼會這樣呢?

不過,先不要激動,現在問題來了,你能計算一下發生這種情況的概率嗎?

不會算?難道你也想以悲劇結尾?!

解題思路:

1.全錯排列除以全排列

當前n-1個人全部排錯時,第n個人與其中任意乙個人交換,則n個人全部排錯。

當前n-1個人中僅有n-2個人全部排錯時,第n個人與其中正確的乙個人交換,則n個人全部排錯。

得出f[n]=(n-1)*(f[n-1]+f[n-2])

注意事項:

無論是階乘還是遞迴,都要用到long long int

我的**:

#include#includeusing namespace std;

int main()

; int a;

long long int fenzi[25]=;

for(int j=4;j<=20;j++)

for(int i=2;i<=20;i++)

int n;

cin>>n;

while(n--)

return 0;

}

hdoj2048 神 上帝以及老天爺

include int main for int i 2 i n i ans 100.0 a n b n printf 2f n ans return 0 已ac a 2 a 3 很容易就能推出來。然後a 4 之後。就像是在編號1 n的盒子中放編號1 n的小球並且小球的編號不能與盒子的編號相等,每增...

基礎程式設計 HDOJ2048神 上帝以及老天爺

這個題目沒有想出來,最後不得不看了別人的結題報告。知道了這是乙個關於錯排的題目,有根據別人的思路,推到了一下公式,才開始自己實現 反正我一見到排列組合的題目腦袋就會一團漿糊,可能高中時候就沒有學好。假設前n 1個都已經是錯排了,總共有f n 1 種。那麼,把第n個放到這個錯排中,會有兩種情況 第一 ...

HDOJ 2048 神 上帝及老天爺(錯排)

hdu 2006 10 acm contest的頒獎晚會隆重開始了!為了活躍氣氛,組織者舉行了乙個別開生面 獎品豐厚的 活動,這個活動的具體要求是這樣的 首先,所有參加晚會的人員都將一張寫有自己名字的字條放入 箱中 然後,待所有字條加入完畢,每人從箱中取乙個字條 最後,如果取得的字條上寫的就是自己的...