hdu 1284 完全背包决策数

来源:互联网 发布:个人域名备案企业网站 编辑:程序博客网 时间:2024/06/16 17:21

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

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

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

Sample Input
2934
12553

Sample Output
718831
13137761

题解:

参考:
背包问题——“01背包”及“完全背包”装满背包的方案总数分析及实现
http://blog.csdn.net/wumuzi520/article/details/7021210
状态转移方程:dp[i][j]=dp[i-1][j]+dp[i][j-i];

代码:

#include <iostream>#include <cstring>using namespace std;const int maxn = 40000;int dp[4][32779];int main(){    memset(dp,0,sizeof(dp));    dp[0][0]=1;    for(int i=1; i<=3; i++)    {        for(int j=0; j<32768; j++)        {           dp[i][j]=dp[i-1][j]+dp[i][j-i];        }    }    int n;    while(cin>>n)    {        cout<<dp[3][n]<<endl;    }    return 0;}
原创粉丝点击