Holding Bin-Laden Captive!(母函數)

題目大意是給出面值分別爲1 2 5的硬幣的數量,求用這些硬幣不能搭配出來的總面值的方法數。

母函數模板請看我的另一篇文章http://blog.csdn.net/rcy_zhu/article/details/75041050

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
#define ll long long
#define inf 0xfffffff
#define N 9002

int a[N],b[N];
int v[4]= {0,1,2,5};
int n2[5];

int main()
{
    while(cin>>n2[1]>>n2[2]>>n2[3],n2[1],n2[2],n2[3])
    {
        memset(a,0,sizeof(a));
        a[0]=1;
        int n=0;
        for(int i=1; i<=3; i++)
        {
            n+=v[i]*n2[i];
            memset(b,0,sizeof(b));
            for(int j=0; j<=n2[i]&&j*v[i]<=n; j++)
            {
                for(int k=0; k+j*v[i]<=n; k++)
                    b[k+j*v[i]]+=a[k];
            }
            memcpy(a,b,sizeof(b));
        }
        int ans=0;
        for(ans=0; ans<=n; ans++)
            if(a[ans]==0)
                break;
        printf("%d\n",ans);
        memset(n2,0,sizeof(n2));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章