zoukankan      html  css  js  c++  java
  • LeetCode 70. 爬楼梯

    70. 爬楼梯

    难度简单

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    注意:给定 n 是一个正整数。

    示例 1:

    输入: 2
    输出: 2
    解释: 有两种方法可以爬到楼顶。
    1.  1 阶 + 1 阶
    2.  2 阶

    示例 2:

    输入: 3
    输出: 3
    解释: 有三种方法可以爬到楼顶。
    1.  1 阶 + 1 阶 + 1 阶
    2.  1 阶 + 2 阶
    3.  2 阶 + 1 阶

    思路1:对比几组数据,不难发现,如果使用递归的话,递归出口为(n==1)return 1;(n==2)return 2;,这时我们只需考虑f(n-1)+f(n-2),代码如下:

    1 int climbStairs(int n){
    2     if(n==1){
    3         return 1;
    4     }
    5     if(n==2){
    6         return 2;
    7     }
    8     return climbStairs(n-1)+climbStairs(n-2);
    9 }

    但是这样的话,是会超时的。

    所以有了一下思路,对着推过去,刚好与递归相反,自底向上计算。

     1 int climbStairs(int n){
     2     if(n==1){
     3         return 1;
     4     }
     5     int dp[n+1],i;
     6     dp[1]=1;
     7     dp[2]=2;
     8     for(i=3;i<=n;i++){
     9         dp[i]=dp[i-1]+dp[i-2];
    10     }
    11     return dp[i-1];
    12 }
  • 相关阅读:
    选择排序
    插入排序
    冒泡排序
    linux 常用命令全集
    Boost简介
    postgresql命令行
    Ncurses 命令行图形库
    rsync ssh文件同步
    BusyBox参考
    screen命令
  • 原文地址:https://www.cnblogs.com/woju/p/12838642.html
Copyright © 2011-2022 走看看