美文网首页
算法-爬楼梯问题

算法-爬楼梯问题

作者: hu_luo_tong | 来源:发表于2018-04-28 10:42 被阅读0次

一个N阶的楼梯,每次能1或着2阶,问走n阶的楼梯有多少种走法?

分析可知在走第n阶的时候,是与第n-1阶和n-2阶有关系的。用户走到第n阶的方法应该是用户走到第n-1 n-2阶的和。使用数学表达式应该 如下:


当n=1 或者n=2 时,f(n) = 1,所以我们可以考虑使用递归来实现

   func ClimbStarisRecursion(n int) int{
          if n == 1 || n == 0{
              return 1
          }
          
          return ClimbStarisRecursion(n-2) + ClimbStarisRecursion(n-1)
     }

     func main(){
          step := 20
         fmt.Println(ClimbStarisRecursion(20))
     }

一般递归问题可以转换为动态规划问题来处理,相比于递归算法伴随这会伴随着较多的出栈入栈操作消耗,我们使用动态规划算法性能会优于递归算法,下面我们给出动态规划的版本

    func ClimbStarisDP(n int) int{
         pre := 1
         now := 1
         var tmp int
         for i := 2;i <= n;i++{
             tmp = now
             now = pre + now
             pre = tmp
        }   
        return now
    }

算法问题的计算过程中,最重要的抽象出问题中的数学模型,然后根据数学模型找到合适的计算方法(递归,动态规划,贪婪算法)进行代入求解是否能够得到需要的问题。

相关文章

  • 算法-爬楼梯问题

    一个N阶的楼梯,每次能1或着2阶,问走n阶的楼梯有多少种走法? 分析可知在走第n阶的时候,是与第n-1阶和n-2阶...

  • 第20章 动态规划入门

    1、蒜头君爬楼梯(一) 算法分析 时间复杂度 Java 代码 2、蒜头君爬楼梯(二) 算法分析 时间复杂度 Jav...

  • 算法:爬楼梯问题中的递归

    背景 最近在刷 leetCode 的时候发现一个问题,解决的思路其实完全可以用递归去实现,用递归的话代码又简洁,三...

  • 【算法题】12.爬楼梯问题

    题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬...

  • 算法-爬楼梯

    如果爬楼梯需要 n 阶你才能到达楼顶。( n 是一个正整数)每次你可以爬 1 或 2 个台阶。你有多少种不同的方法...

  • 算法—爬楼梯

    假设你正爬楼梯,需要n阶才能到顶楼。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到顶楼呢?(n 为...

  • DP问题求解(一)爬楼梯

    DP问题求解之爬楼梯 DP算法是在面试或者机试中会重点考察的一类问题,而且这类问题一般难度比较大,所以想花一点时间...

  • 【python算法书】动态规划算法,爬楼梯问题?

    题目:窝窝家住在二楼,每次回家都需要经过一个有10层台阶的楼梯。窝窝每次可以选择一步走一级台阶或者一步都两级台阶。...

  • 算法:爬楼梯 - Swift

    题目:你正在爬楼梯。需要 n 步你才能到达顶部。每次你可以爬 1 或 2 个台阶。你有多少种不同的方式可以爬到楼顶...

  • 经典爬楼梯算法

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢...

网友评论

      本文标题:算法-爬楼梯问题

      本文链接:https://www.haomeiwen.com/subject/fhnwlftx.html