zoukankan      html  css  js  c++  java
  • HDU -1284钱币兑换

    这个是完全背包的基础题, 模拟换钱, 刚开始状态方程写错了,我直接写dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3], 然后想了想感觉太大了,不太对,后来看网上的代码看着两层for循环,基本是一样的,为什么我的不对啊,然后手工模拟了一个小例子,发现,这种状态转移方程算重了,多加了好多重复的,因为完全背包和01背包代码的的区别,就是第二层for循环的顺序,所以这个题也不例外,这个题是完全背包,因为它可以无限取,代码如下

     1 #include <iostream>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 const int N = 40000;
     6 long long dp[N];
     7 int main()
     8 {
     9     //预处理
    10     dp[0] = 1;
    11     for (int i = 1; i <= 3; i++)
    12     {
    13         for (int j = i; j <= N; j++)
    14             dp[j] += dp[j - i];
    15     }
    16     int n;
    17     while (cin >> n)
    18     {
    19         cout << dp[n] << endl;
    20     }
    21 
    22     return 0;
    23 }
  • 相关阅读:
    HTML的基本骨架
    2017.7.27
    2017.7.26
    2017.7.25
    2017.7.24
    2017.7.22
    2017.7.21
    Javascript Step by Step
    Javascript Step by Step
    Javascript Step by Step
  • 原文地址:https://www.cnblogs.com/Howe-Young/p/4154273.html
Copyright © 2011-2022 走看看