hdu 1085 Holding Bin-Laden Captive!(母函数)

代码:
#include<cstdio>
#include<cstring>
using namespace std;

long long c1[8005],c2[8005];

int main()
{
    int a[4];
    a[1]=1;
    a[2]=2;
    a[3]=5;
    int n[4];
    while(scanf("%d%d%d",&n[1],&n[2],&n[3])&&(n[1]||n[2]||n[3]))
    {
        memset(c1,0,sizeof(c1));
        memset(c2,0,sizeof(c2));
        c1[0]=1;
        for(int i=1;i<=3;i++)
        {
            if(n[i]==0)
                continue;
            for(int j=0;j<=8003;j++)
            {
                for(int k=0;k<=a[i]*n[i]&&k+j<=8003;k+=a[i])
                {
                    c2[j+k]+=c1[j];
                }
            }
            for(int j=0;j<=8003;j++)
            {
                c1[j]=c2[j];
                c2[j]=0;
            }
        }
        for(int i=0;i<=8003;i++)
        {
            if(c1[i]==0)
            {
                printf("%d\n",i);
                break;
            }
        }
    }
    return 0;
}

你可能感兴趣的:(母函数)