zoukankan      html  css  js  c++  java
  • HDU1284钱币兑换(完全背包)

    钱币兑换问题

    Problem Description
    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
     
    Input
    每行只有一个正整数N,N小于32768。
     
    Output
    对应每个输入,输出兑换方法数。
     
    Sample Input
    2934 12553
     
    Sample Output
    718831 13137761
     
     
    这是完全背包的计数问题
    状态转移方程 dp[j]=dp[j]+dp[j-w[i]]
    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
        int n,dp[32800],w[]={1,2,3};
        memset(dp,0,sizeof(dp));
        //当取的钱币都为0时,也算一种方案
        dp[0]=1;
        cin>>n;
        for(int i=0;i<3;i++)
        for(int j=w[i];j<=n;j++)
            //每次加上j-w[i]的取法
            dp[j]=dp[j]+dp[j-w[i]];
        cout<<dp[n];
        return 0;
    }
     
  • 相关阅读:
    任务安排(代价提前付)
    10 01模拟赛订正
    哈希hash
    初学期望
    P1251 递推专练3
    P1229-神秘岛
    P1228-重叠的图像
    白银莲花池
    求强连通分量
    割边
  • 原文地址:https://www.cnblogs.com/xuanzo/p/12190647.html
Copyright © 2011-2022 走看看