70. 爬楼梯 (进阶)
题目链接:57. 爬楼梯(第八期模拟笔试)
文档讲解:代码随想录
状态:通过
代码实现:
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<int> dp(n + 1, 0);
dp[0] = 1;
for(int j = 0; j <= n; j++){
for(int i = 1; i <= m; i++){
if(j - i >= 0) dp[j] += dp[j - i];
}
}
cout << dp[n] << endl;
return 0;
}
322. 零钱兑换
题目链接:. - 力扣(LeetCode)
文档讲解:代码随想录
视频讲解:动态规划之完全背包,装满背包最少的物品件数是多少?| LeetCode:322.零钱兑换_哔哩哔哩_bilibili
状态:未通过
代码实现:
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int> dp(amount + 1, INT_MAX);
dp[0] = 0;
for(int i = 0; i < coins.size(); i++){
for(int j = coins[i]; j <= amount; j++){
if(dp[j - coins[i]] != INT_MAX){
dp[j] = min(dp[j], dp[j - coins[i]] + 1);
}
}
}
if(dp[amount] == INT_MAX) return -1;
return dp[amount];
}
};
279.完全平方数
题目链接:. - 力扣(LeetCode)
文档讲解:代码随想录
视频讲解:动态规划之完全背包,换汤不换药!| LeetCode:279.完全平方数_哔哩哔哩_bilibili
状态:未通过
代码实现:
class Solution {
public:
int numSquares(int n) {
vector<int> dp(n + 1, INT_MAX);
dp[0] = 0;
for(int i = 1; i * i <= n; i++){
for(int j = i * i; j <= n; j++){
dp[j] = min(dp[j], dp[j - i * i] + 1);
}
}
return dp[n];
}
};