首页 > 代码库 > hdu 2521 一卡通大冒险 (斯特灵数,贝尔数)
hdu 2521 一卡通大冒险 (斯特灵数,贝尔数)
/* 将N张卡分成若干个集合,集合不为空,有多少种分法。 f[n][m]表示n张卡分成m组的种类数,那么f[n][m]=f[n-1][m-1]+f[n-1][m]*m,//第二类斯特灵数 而ans[n]=sum{f[n][l]}(1<=l<=m)。//ans为贝尔数,Bell数是将P个元素集合分到非空且不可区分例子的划分个数。 其中:f[n-1][m-1]代表第n个人自成一堆; f[n-1][m]*m代表第n个人不自成一堆。 */ # include <stdio.h> # include <algorithm> # include <string.h> using namespace std; int f[2011][2011]; int main() { int i,l; int t,n; int ans[2011]; f[1][1]=1; ans[1]=1; for(i=2;i<=2000;i++) { f[i][1]=1;//i张卡在一本书里 f[i][i]=1;//i张卡在i本书里 ans[i]=2;//上面;两种情况 for(l=2;l<i;l++) { f[i][l]=f[i-1][l-1]+f[i-1][l]*l; f[i][l]%=1000; ans[i]=(ans[i]+f[i][l])%1000; } } while(~scanf("%d",&t)) { while(t--) { scanf("%d",&n); printf("%d\n",ans[n]); } } return 0; }
hdu 2521 一卡通大冒险 (斯特灵数,贝尔数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。