首页 > 代码库 > HDU 1521 指数型母函数
HDU 1521 指数型母函数
方法一: DFS
方法二:生成函数
每个数可以重复一定次数,求排列组合数,这是裸的指数型生成函数;
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 double c1[15],c2[15]; 6 int a[15]; 7 int num[15]; 8 9 10 int main() {11 12 a[0] = 1;13 for(int i=1; i<13; i++)14 a[i] = a[i-1]*i;15 16 int n,m;17 while(scanf("%d%d",&n,&m)!=EOF) {18 19 memset(c1,0,sizeof(c1));20 memset(c2,0,sizeof(c2));21 22 for(int i=1; i<=n; i++)23 scanf("%d",&num[i]);24 25 for(int i=0; i<=num[1]; i++)26 c1[i] = 1.0/a[i];27 28 for(int i=2; i<=n; i++) {29 30 for(int j=0; j<=m; j++) {31 32 for(int k=0; k<=num[i]&&j+k<=m; k++)33 c2[j+k] +=c1[j]/a[k];34 }35 memcpy(c1,c2,sizeof(c2));36 memset(c2,0,sizeof(c2));37 }38 39 printf("%.0lf\n",c1[m]*a[m]);40 41 }42 43 return 0;44 }
HDU 1521 指数型母函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。