代码随想录算法训练营第四十四天| 518. 零钱兑换 II、377. 组合总和 Ⅳ
518. 零钱兑换 II
题目链接
文章讲解
class Solution {
public:
int change(int amount, vector<int>& coins) {
int n = coins.size();
vector<int> dp(amount + 1, 0);
dp[0] = 1;
for (int i = 0; i < n; i++) {
for (int j = coins[i]; j <= amount; j++) {
dp[j] += dp[j - coins[i]];
}
}
return dp[amount];
}
};
377. 组合总和 Ⅳ
题目链接
文章讲解
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
int n = nums.size();
vector<int> dp(target + 1, 0);
dp[0] = 1;
for (int j = 0; j <= target; j++) {
for (int i = 0; i < n; i++) {
if (j - nums[i] < 0 || dp[j] > INT32_MAX - dp[j - nums[i]]) continue;
dp[j] += dp[j - nums[i]];
}
}
return dp[target];
}
};