集合划分问题(斯特林数模板)
2016-04-29 13:38
441 查看
Description
n个元素的集合{1,2,…,n}可以划分若干个非空子集。例如,当n=4时,集合{1,2,3,4}可以划分为15个不同的非空子集如下:
{{1},{2},{3},{4}},
{{1,2},{3},{4}},
{{1,3},{2},{4}},
{{1,4},{2},{3}},
{{2,3},{1},{4}},
{{2,4},{1},{3}},
{{3,4},{1},{2}},
{{1,2},{3,4}},
{{1,3},{2,4}},
{{1,4},{2,3}},
{{1,2,3},{4}},
{{1,2,4},{3}},
{{1,3,4},{2}},
{{2,3,4},{1}},
{{1,2,3,4}}
给定正整数n(1<=n<=20),计算出n个元素的集合{1,2,…,n} 可以化为多少个不同的非空子集。
Input
多组输入数据,每组数据1行,表示元素个数n.
Output
对于每组数据,输出一行一个数,表示不同的非空子集的个数。
Sample Input
2
4
Sample Output
2
15
s(n,m)=s(n-1,m-1),m*s(n-1,m)
n个元素的集合{1,2,…,n}可以划分若干个非空子集。例如,当n=4时,集合{1,2,3,4}可以划分为15个不同的非空子集如下:
{{1},{2},{3},{4}},
{{1,2},{3},{4}},
{{1,3},{2},{4}},
{{1,4},{2},{3}},
{{2,3},{1},{4}},
{{2,4},{1},{3}},
{{3,4},{1},{2}},
{{1,2},{3,4}},
{{1,3},{2,4}},
{{1,4},{2,3}},
{{1,2,3},{4}},
{{1,2,4},{3}},
{{1,3,4},{2}},
{{2,3,4},{1}},
{{1,2,3,4}}
给定正整数n(1<=n<=20),计算出n个元素的集合{1,2,…,n} 可以化为多少个不同的非空子集。
Input
多组输入数据,每组数据1行,表示元素个数n.
Output
对于每组数据,输出一行一个数,表示不同的非空子集的个数。
Sample Input
2
4
Sample Output
2
15
s(n,m)=s(n-1,m-1),m*s(n-1,m)
#include <iostream> #include <string.h> #include<cstdio> using namespace std; const int N=101; long long s ; void init() { memset(s,0,sizeof(s)); s[1][1]=1; for(int i=2; i<N; i++) { for(int j=1; j<=i; j++) { s[i][j]=(s[i-1][j-1]+j*s[i-1][j]); } } } int main() { init(); int n; long long sum; while(~scanf("%d",&n)) { sum=0; for(int i=1;i<=n;++i) sum+=s [i]; printf("%I64d\n",sum); } }
相关文章推荐
- ireport/jasprereport studio 导出excel最后有空白行
- Spring中的jdbcTemplate使用方法
- In-App Purchase(iap)快速指南
- HDU 2027 统计元音(gets+水题)
- 多线程编程技巧
- java.util.Stack类简介
- 关于Excel表格的导出方式一
- OC中修改 对象的结构体属性
- android自定义alertdialog的四角
- SourceTree推送时一直提示输入密码
- 瞎比比系列---1st
- 实现点击箭头,展示更多text内容
- 【JAVA】 标注(Annotation)
- 如何在Windows访问VMware里面的应用
- Win7驱动安装时的信任列表管理
- IBM Lotus Domino V8.5 服务器管理入门手册
- Android的MVP框架(MVPExtend)
- CodeForces - 282A Bit++ (水)
- 多TAB可悬浮头控件
- Myeclipse中java项目转换为Web项目