hdoj1284-钱币兑换问题

题目链接

Problem Description

在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。

Input

每行只有一个正整数N,N小于32768。

Output

对应每个输入,输出兑换方法数。

Sample Input

2934
12553

Sample Output

718831
13137761

思路

其实就是完全背包问题,采用动态规划求解

code

#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

const int MAX = 32769;

long long data[MAX];

int main()
{
    int m = 0;
    memset(data, 0, sizeof(data));
    data[0] = 1;
    for(int j = 1; j <= 3; ++ j)
    {
        for(int i = 1; i <= MAX; ++ i)
        {
            if(i >= j)
            {
                data[i] += data[i-j];
            }
        }
    }
    while(cin >> m)
    {
        cout << data[m] << endl;
    }
    return 0;
}
posted @ 2016-10-18 20:10  zq216991  阅读(110)  评论(0编辑  收藏  举报