代码随想录算法训练营第四十四天 | 518. 零钱兑换 II、377. 组合总和 Ⅳ
518. 零钱兑换 II
题目链接:518. 零钱兑换 II
- 求方法数,很经典,但是要注意是组合数
377. 组合总和 Ⅳ
题目链接:377. 组合总和 Ⅳ
- 先背包容量,后物品,则是排列
- 使用记忆化递归
-
class Solution { public: unordered_map<int, int> memo; int dp(vector<int>& nums, int remains) { if(memo.count(remains) != 0) { return memo[remains]; } if(remains == 0) { return 1; } if (remains < 0) { return 0; } int res = 0; // 方法数 for (int i = 0; i < nums.size(); i++) { res += dp(nums, remains - nums[i]); } memo[remains] = res; return memo[remains]; } int combinationSum4(vector<int>& nums, int target) { return dp(nums, target); } };