518.零钱兑换II

  1. dp数组含义,默认的dp表示这么大的容量能装多少东西,现在问的是这么大的背包最多有多少种方法。
  2. dp关系,dp[j] += dp[j - coins[i]];
  3. 递推关系:不需要顺序,因此和0-1背包是一样的
  4. 初始值:和机器人走方格相同,初始值得是1,其它的都是1。
class Solution {
public:
    int change(int amount, vector& coins) {
      vectordp(amount+1,0);
      dp[0] = 1;
      for (int i = 0; i < static_cast(coins.size()); ++i) {
        for (int j = 0; j < static_cast(dp.size()); ++j) {
          if (j - coins[i] >= 0) {
            dp[j] += dp[j - coins[i]];
          }
        }
      }
      return dp.back();
  }
};

你可能感兴趣的:(手撕leetcode,c++)