- 70. 爬楼梯 (进阶)
class Solution {
public:
int climbStairs(int n)
{
vector<int>dp(n,0);
dp[0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=2;j++)
{
if(i-j>=0)
dp[i]+=dp[i-j];
}
}
return dp[n];
}
};
- 322. 零钱兑换
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);
}
}
return dp[amount]==INT_MAX?-1: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;j++) dp[j]=min(dp[j],dp[j-i*i]+1); } return dp[n]; } };