今日任务
518. 零钱兑换
- 题目链接: https://leetcode.cn/problems/coin-change-ii/description/
- 题目描述:
Code
class Solution {
public:
int change(int amount, vector<int>& coins) {
// dp[i][c] = max(dp[i - 1][c], dp[i][c - coins[i]])
// int n = coins.size();
// vector<vector<int>> memo(n, vector<int>(amount + 1, -1));
// function<int(int, int)> dfs = [&](int i , int c)->int{
// if(i < 0){
// return c == 0 ? 1 : 0;
// }
// int &res = memo[i][c];
// if(res != -1){
// return res;
// }
// if(c < coins[i]){
// return res = dfs(i - 1, c);
// }
// return res = dfs(i - 1, c) + dfs(i, c -coins[i]);
// };
// return dfs(n - 1, amount);
vector<int> dp(amount + 1);
dp[0] = 1;
for(int x : coins){
for(int c = x; c <= amount; c++){
dp[c] += dp[c - x];
}
}
return dp[amount];
}
};
377. 组合总和 Ⅳ
- 题目链接: https://leetcode.cn/problems/combination-sum-iv/description/
- 题目描述:
Code
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
// vector<int> memo(target + 1, -1);
// function<int(int)> dfs = [&](int c)->int{
// if(c == 0){
// return 1;
// }
// int & res = memo[c];
// if(res != -1){
// return res;
// }
// res = 0;
// for(int x : nums){
// if(c >= x){
// res += dfs(c - x);
// }
// }
// return res;
// };
// return dfs(target);
vector<unsigned> dp(target + 1);
dp[0] = 1;
for(int c = 1; c <= target; c++){
for(int x : nums){
if(x <= c){
dp[c] += dp[c - x];
}
}
}
return dp[target];
}
};
70. 爬楼梯 (进阶)
- 题目链接: https://leetcode.cn/problems/climbing-stairs/description/
- 题目描述:
Code
class Solution {
public:
int climbStairs(int n) {
// vector<int> memo(n + 1, -1);
// function<int(int)> dfs = [&](int i)->int{
// if(i <= 1){
// return 1;
// }
// int &m = memo[i];
// if(m != -1){
// return m;
// }
// return m = dfs(i - 1) + dfs(i - 2);
// };
// return dfs(n);
// int f0, f1;
// f0 = f1 = 1;
// for(int i = 2; i <= n; i++){
// int newf = f1 + f0;
// f0 = f1;
// f1 = newf;
// }
// return f1;
vector<int> nums = {1, 2};
vector<int> dp(n + 1);
dp[0] = 1;
for(int c = 1; c <= n; c++){
for(int x : nums){
if(x <= c){
dp[c] += dp[c - x];
}
}
}
return dp[n];
}
};