hdu1398 普通母函数的应用 解决多重集组合问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1398 普通母函数的应用 解决多重集组合问题相关的知识,希望对你有一定的参考价值。
这个题的意思是给你1^2 2^2 3^2 ... 17^2这17个数, 为你组成i的方案数有多少个, 可以通过普通母函数来求解, 系数就代表方案数, (1+x+x^2+...x^300)(1+x^2+)..., 代码如下:
#include <iostream> #include <algorithm> using namespace std; int num1[300+10], num2[300+10]; void init() { for(int i=0; i<=300; i++) num1[i]=1, num2[i]=0; for(int i=2; i<=17; i++) { for(int j=0; j<=300; j++) //aj*x^j * x^k for(int k=0; k+j<=300; k+=i*i) num2[j+k] += num1[j]; for(int i=0; i<=300; i++) num1[i]=num2[i], num2[i]=0; } } int main() { init(); int n; while(cin>>n) { if(n==0) break; cout<<num1[n]<<endl; } return 0; }
以上是关于hdu1398 普通母函数的应用 解决多重集组合问题的主要内容,如果未能解决你的问题,请参考以下文章