hdu 3625 第一類striling 數

2022-08-05 14:57:14 字數 810 閱讀 4652

1/**

2第一類stirling數是有正負的,其絕對值是包含n個元素的集合分作k個環排列的方法數目。

3遞推公式為,

4s(n,0) = 0, s(1,1) = 1.

5s(n+1,k) = s(n,k-1) + ns(n,k)。67

大意: 有n個房間,n把鑰匙,鑰匙在房間中,問: 在最多破壞k個門的情況下,問有多少種方法,可以將所有的門開啟,注意,不能破壞第一個門89

思路: 即是將n個元素分成m個環,得排列方式。。除掉第一個元素獨立成環的方式

10可以得出,這是第一類stirling數。。。11*

*/12 #include 13 #include 14 #include 15

using

namespace

std;

16long

long s[30][30

];17

long

long fac[30

];18

void

init()25}

2627 fac[0] =1;28

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

29 fac[i] = fac[i-1]*i;30}

31int

main()

3243

//cout<44 ans = ans/(fac[n]+0.0

);45 printf("

%.4lf\n

",ans);46}

47return0;

48 }