package 剑指offer.动态规划;
/**
* 斐波那契数列
* 每次这能爬一节 或者两节
* 请问多多少种爬楼梯的做法
*
* 从dp[i]的定义可以看出,dp[i] 可以有两个方向推出来。
* 首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。
* 还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。
* 那么dp[i]就是 dp[i - 1]与dp[i - 2]之和!
* 所以dp[i] = dp[i - 1] + dp[i - 2] 。
*
*/
public class leetcode70爬楼梯 {
public int climbStairs(int n) {
if(n<=2){
return n;
}
//第一节台阶只有一种方法
int i1 = 1;
//第二节台阶有两种方法
int i2 = 2;
for(int i=3;i<=n;i++){
//下一节台阶的方法数=前面两节的方法数之和
int temp = i1+i2;
i1 = i2;
i2 = temp;
}
return i2;
}
}
leetcode70爬楼梯【dp】
最新推荐文章于 2024-09-28 22:05:59 发布