码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 3625 第一类striling 数

时间:2014-05-13 21:08:12      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   c   

bubuko.com,布布扣
 1 /**
 2 第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目。
 3 递推公式为,
 4 S(n,0) = 0, S(1,1) = 1.
 5 S(n+1,k) = S(n,k-1) + nS(n,k)。
 6 
 7 大意: 有n个房间,n把钥匙,钥匙在房间中,问: 在最多破坏k个门的情况下,问有多少种方法,可以将所有的门打开,注意,不能破坏第一个门
 8 
 9 思路: 即是将n个元素分成m个环,得排列方式。。除掉第一个元素独立成环的方式
10 可以得出,这是第一类stirling数。。。
11 **/
12 #include <iostream>
13 #include <cstdio>
14 #include <algorithm>
15 using namespace std;
16 long long s[30][30];
17 long long fac[30];
18 void init(){
19     for(int i=1;i<=20;i++){
20         s[i][0] =0;
21         s[i][i] =1;
22         for(int j=1;j<i;j++){
23             s[i][j] = s[i-1][j-1]+ s[i-1][j] *(i-1);
24         }
25     }
26 
27     fac[0] =1;
28     for(int i=1;i<=20;i++)
29         fac[i] = fac[i-1]*i;
30 }
31 int main()
32 {
33     init();
34     int t;
35     cin>>t;
36     while(t--){
37         int n,k;
38         cin>>n>>k;
39         double ans =0;
40         for(int i=1;i<=k;i++){
41             ans += s[n][i] - s[n-1][i-1];
42         }
43         //cout<<ans<<" "<<fac[n]<<endl;
44         ans = ans/(fac[n]+0.0);
45         printf("%.4lf\n",ans);
46     }
47     return 0;
48 }
bubuko.com,布布扣

 

hdu 3625 第一类striling 数,布布扣,bubuko.com

hdu 3625 第一类striling 数

标签:style   blog   class   code   java   c   

原文地址:http://www.cnblogs.com/Bang-cansee/p/3724078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!