斯特林数

•斯特林数分为两种,经常出现在许多组合枚举问题中。
•第一类斯特林数,是把n个不同的物体分为k个不同的非空循环排列的方案个数。(循环指一个接一个有关系的,不一定是圆)
•第二类斯特林数,是把n个不同的物体分为k个不同的非空集合的方案个数。(S(p,k)=s(p-1,k)+s(p-1,k-1)*k)
•斯特林数的S(p,p)=1S(p,0)=0 
•注意S(0,0)=1
•第一类Stirling数 s(p,k)
•s(p,k)的一个的组合学解释是:将p个物体排成k个非空循环排列的方法数。
•s(p,k)=(p-1)*s(p-1,k)+s(p-1,k-1) ,1<=k<=p-1
•边界条件:s(p,0)=0,p>=1  s(p,p)=1  ,p>=0
•递推公式的意思是,当我考虑放第p个物品时,方案首先有第p个物品单独组成一个排列,其他p-1个有k-1个排列,即s(p-1,k-1)。再有就是把第p个元素放在已有的k个排列中,因为是循环排列,添加在每一个元素的左边都是不同,即(p-1)*s(p-1,k);
•代码的实现
<span style="font-size:18px;">for(i=0;i<N;i++)  
{  
    C[i][0]=1;  
    C[i][i]=1;  
    S[i][0]=0;  
    S[i][i]=1;  
    for(j=1;j<i;j++)  
    {  
       C[i][j]=(C[i-1][j]%MOD+C[i-1][j-1]%MOD)%MOD;  
       S[i][j]=((i-1)%MOD*S[i-1][j]%MOD+S[i-1][j-1]%MOD);  
    }  
}  </span>

第一类简单题目 hdu4372   http://acm.hdu.edu.cn/showproblem.php?pid=4372  
                          hdu3625  http://acm.hdu.edu.cn/showproblem.php?pid=3625
第二类简单题目 hdu4045  http://acm.hdu.edu.cn/showproblem.php?pid=4045
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值