第四十四天|518. 零钱兑换 II 377. 组合总和 Ⅳ
518. 零钱兑换 II
完全背包第一题,遍历顺序改为从前到后
class Solution {
public:
int change(int amount, vector<int>& coins) {
vector<int> dp(amount+1,0);
dp[0]=1;
for(int i=0;i<coins.size();i++){
for(int j=coins[i];j<=amount;j++){
dp[j]+=dp[j-coins[i]];
}
}
return dp[amount];
}
};
377. 组合总和 Ⅳ
for循环的顺序变了,组合要求研究顺序,那就先遍历背包
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
vector<int> dp(target+1,0);
dp[0]=1;
for(int i=1;i<=target;i++){
for(int j=0;j<nums.size();j++){
if(nums[j]<=i)dp[i]=(long)dp[i-nums[j]]+dp[i];
}
}
return dp[target];
}
};