爬楼梯:
题目链接
class Solution {
public:
int climbStairs(int n) {
if(n==1) return 1;
if(n==2) return 2;
int res=0;
int a=1,b=2;
for(int i=3;i<=n;i++){
res=a+b;
a=b;
b=res;
}
return res;
}
};
- 使用最小花费爬楼梯
题目链接
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int f[cost.size()+10];
fill(f,f+cost.size()+10,0);
f[0]=0;
f[1]=cost[0];
int f2[cost.size()+10];
fill(f2,f2+cost.size()+10,0);
f2[0]=0;
f2[1]=0;
f2[2]=cost[1];
for(int i=2;i<cost.size()+1;++i){
f[i]=min(f[i-1]+cost[i-1],f[i-2]+cost[i-2]);
if(i>=3)f2[i]=min(f2[i-1]+cost[i-1],f2[i-2]+cost[i-2]);
}
int res=min(f[cost.size()],f2[cost.size()]);
return res;
}
};