这题较简单,递归的关系比较清晰,主要要加入记忆化DP,因为有好多重复子问题。
class Solution {
public:
int dp[1100];
int recursion(vector<int> cost,int n) {
if(dp[n]!=-1)
return dp[n];
int result=0;
if(n==1||n==0)
return 0;
result=result+min(recursion(cost,n-1)+cost[n-1],recursion(cost,n-2)+cost[n-2]);
dp[n]=result;
return result;
}
int minCostClimbingStairs(vector<int>& cost) {
for(int i=0;i<1100;i++)
dp[i]=-1;
return recursion(cost,cost.size());
}
};