70. 爬楼梯
C++实现
#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 i =1;i<=n;i++){
for(int j = 1; j<=m;j++){
if(i>=j){
dp[i] += dp[i-j];
}
}
}
cout<<dp[n]<<endl;
return 0;
}
322. 零钱兑换
题目链接:322. 零钱兑换
文档链接:322. 零钱兑换
视频链接:动态规划之完全背包,装满背包最少的物品件数是多少?| LeetCode:322.零钱兑换
C++实现
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.完全平方数
题目链接:279.完全平方数
文档链接:279.完全平方数
视频链接:动态规划之完全背包,换汤不换药!| LeetCode:279.完全平方数
C++实现
class Solution {
public:
int numSquares(int n) {
vector<int> dp(n + 1, INT_MAX);
dp[0] = 0;
for (int i = 0; i <= n; i++) {
for (int j = 1; j * j <= i; j++) {
dp[i] = min(dp[i], dp[i - j * j] + 1);
}
}
return dp[n];
}
};