今天第一天恢复上班,并且在班上把三道题都做啦。hhh
想法都写在备注里啦,今日十分迅速+舒服。
70. 爬楼梯 (进阶)
#include<iostream>
#include<vector>
using namespace::std;
int main(){
int n = 0;
int m = 0;
while(cin >> n >> m){
vector<int>dp(n+1,0);
dp[0] = 1;
for(int j = 0;j < n+1;j++){
for(int i = 1;i <= m;i++){ //这行需要注意,台阶不能是0台阶
if(j >= i)dp[j] += dp[j - i]; //需要大于等于,考虑一下边界
}
}
std::cout << dp[n] << std::endl;
}
return 0;
}
322. 零钱兑换
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int>dp(amount+1,INT_MAX);
dp[0] = 0;
for(int j = 0;j < amount +1;j++){
for(int i = 0;i < coins.size();i++){
if(j >= coins[i] && 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.完全平方数
class Solution {
public:
int numSquares(int n) {
vector<int>dp(n+1,INT_MAX);
dp[0] = 0;
for(int i = 0;i*i <= n;i++){
for(int j = i*i;j < n+1;j++){
if(dp[j - i*i] != INT_MAX)dp[j] = min(dp[j],dp[j - i*i]+1);
}
}
if(dp[n] == INT_MAX)return -1;
return dp[n];
}
};
结束撒花!!!