斯特林数
来源:互联网 发布:中国少儿编程培训市场 编辑:程序博客网 时间:2024/05/21 02:36
•斯特林数分为两种,经常出现在许多组合枚举问题中。
•第一类斯特林数,是把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
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数
- 斯特林数 [Stirling Numbers]
- HDU4372(第一类斯特林数)
- HDU4372(第一类斯特林数)
- HDU 1018(斯特林数)
- 斯特林数 - 递推
- 斯特林数 组合数
- 斯特林数的研究
- 斯特林数 HDU 3625
- 第一类斯特林数 hdu4372
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- libevent源码分析
- android.intent.action大全
- Android中信息的提示
- eclipse的Debug模式不能启动
- 斯特林数
- 杭电1248杭电1114————完全背包
- java单例模式
- 计算机网络知识点整理(2)
- 16 进制字符串转换为 byte
- Jquery通过submitHandler 实现验证后跳转到别的页面
- HDU_4850_Wow! Such String!(构造)
- 14.PHP内核探索:PHP脚本的执行细节
- mysql 存储过程输入输出参数