对于母函数,我看到最多的是这样两句话:
1.“把组合问题的加法法则和幂级数的乘幂对应起来。”
2.“把离散数列和幂级数一 一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造。 “
母函数最多的一个例子就是砝码问题了,这里就不详细讲解了。总之母函数就是一种用数学多个一次项式子连乘抽象表达种数的问题,也就是组合问题。
这里给出 hdu 2082的代码,方便自己日后套模板。
#include <bits/stdc++.h>
using namespace std;
long long sum;
int a[28];
int c1[52],c2[52];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(c1,0,sizeof(c1));
for(int i=1;i<=26;i++)
{
scanf("%d",&a[i]);
}
a[0]=1;
c1[0]=1;
for(int i=1;i<=26;i++)
{
if(a[i]==0) continue;
for(int k=0;k<=50;k++)
{
for(int j=0;j<=a[i]&&j*i<=50;j++)
{
c2[j*i+k]+=c1[k];
}
}
memcpy(c1,c2,sizeof(c2));
memset(c2,0,sizeof(c2));
}
for(int i=1;i<=50;i++)
sum+=c1[i];
printf("%I64d\n",sum);
sum=0;
}
return 0;
}