HDU 1085 个数限制母函数

来源:互联网 发布:淘宝卖衣服挣钱吗 编辑:程序博客网 时间:2024/05/21 19:41

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1085

给你一定数量的1,2,5分的硬币,找到不能得到的最小的硬币数量。

母函数标准题。

#include<iostream>#include<string.h>using namespace std;int c1[10000], c2[10000];int main(){    int num1, num2, num5,i,j;    while (cin >> num1 >> num2 >> num5&&num1 + num2 + num5 != 0)    {        memset(c1, 0, sizeof(c1));        memset(c2, 0, sizeof(c2));        int max = num1 + 2 * num2 + 5 * num5;//所有硬币的最大价值        for (i = 0; i <= num1; i++)            c1[i] = 1;        for (i = 0; i<= num1; i++)            for (j = 0; j <= 2*num2; j += 2)                c2[j +i] += c1[i];        for (i = 0; i <= num1 + 2 * num2; i++)        {            c1[i] = c2[i];            c2[i] = 0;        }        for (i = 0; i <= num1 + 2 * num2; i++)            for (j = 0; j <= 5 * num5; j += 5)                c2[j + i] += c1[i];        for (i = 0; i <= max; i++)        {            c1[i] = c2[i];            c2[i] = 0;        }        for (i = 0; i <= max; i++)            if (c1[i] == 0)            {                cout << i << endl;                break;            }        if(i==max+1)            cout << i << endl;    }    return 0;}

原创粉丝点击