zoukankan      html  css  js  c++  java
  • hdu 3625 第一类striling 数

     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
    ",ans);
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    获取MAC地址的几种方式
    从0到100——知乎架构变迁史
    CSS3必须要知道的10个顶级命令
    leetcode: 3Sum Closest
    leetcode: 3Sum
    leetcode: Longest Common Prefix
    leetcode: Roman to Integer
    leetcode: Integer to Roman
    leetcode: Container With Most Water
    leetcode: Regular Expression Matching
  • 原文地址:https://www.cnblogs.com/Bang-cansee/p/3724078.html
Copyright © 2011-2022 走看看