当前位置:   article > 正文

代码随想录算法训练营第三十八天|leetcode377、518题

代码随想录算法训练营第三十八天|leetcode377、518题

一、leetcode第518题

该题是完全背包问题,不需要考虑物品放入背包的先后顺序。

具体代码如下:

  1. class Solution {
  2. public:
  3. int change(int amount, vector<int>& coins) {
  4. vector<int>dp(amount+1,0);
  5. dp[0]=1;
  6. for(int i=0;i<coins.size();i++)
  7. {
  8. for(int j=coins[i];j<=amount;j++)
  9. {
  10. dp[j]+=dp[j-coins[i]];
  11. }
  12. }
  13. return dp[amount];
  14. }
  15. };

二、leetcode第377题

本题是完全背包问题,要考虑物品放入背包的先后顺序,因此要先遍历背包再遍历物品。

具体代码如下:

  1. class Solution {
  2. public:
  3. int combinationSum4(vector<int>& nums, int target) {
  4. vector<int>dp(target+1,0);
  5. dp[0]=1;
  6. for(int i=0;i<=target;i++)
  7. {
  8. for(int j=0;j<nums.size();j++)
  9. {
  10. if(i-nums[j]>=0&&dp[i]<INT_MAX-dp[i-nums[j]]){dp[i]+=dp[i-nums[j]];}
  11. }
  12. }
  13. return dp[target];
  14. }
  15. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/836357
推荐阅读
相关标签
  

闽ICP备14008679号