用 Python 编写程序来找出爬楼梯的方法

pythonserver side programmingprogramming更新于 2026/1/9 0:44:17

假设我们有一个有 n 个台阶的楼梯,我们每次可以爬 1 或 2 个台阶。我们必须定义一个函数来返回爬楼梯的不同方法的数量。

台阶的顺序不应改变,因此每个不同的台阶顺序都算作一种方式。如果答案非常大,则将结果取 10^9 + 7 的模数

因此,如果输入为 n = 5,则输出将为 8,因为有 8 种独特的方法 −

  • 1, 1, 1, 1, 1
  • 2, 1, 1, 1
  • 1, 2, 1, 1
  • 1, 1, 2, 1
  • 1, 1, 1, 2
  • 1, 2, 2
  • 2, 1, 2
  • 2, 2, 1

为了解决这个问题,我们将遵循以下步骤 −

  • dp:= 大小为 n+1 的数组,并用 0 填充
  • dp[1]:= 1
  • 对于范围为 2 到 n+1 的 i,执行
    • dp[i]:= dp[i-1]+dp[i-2]
  • 返回 dp mod m 的最后一个元素

让我们看看下面的实现以便更好地理解 −

示例

m =(10**9)+7
class Solution:
   def solve(self, n):
      dp=[0 for _ in range(n+2)]
      dp[1]=1
      for i in range(2,n+2):
         dp[i]=dp[i-1]+dp[i-2]
      return dp[-1] % m
ob = Solution()
print(ob.solve(5))

输入

5

输出

8

相关文章


有用资源