70. Climbing Stairs

问题:

爬楼梯问题。

给定n阶台阶,一次可以爬一阶or两阶。

求一共有多少种爬楼梯的方法。

Example 1:
Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
 
Example 2:
Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
 
Constraints:
1 <= n <= 45

  

解法:DP

  • 状态:n阶台阶
  • 选择:
    • 爬一阶
    • 爬两阶
  • dp[x]:共有x阶台阶时,可选择爬法个数。
    • 状态转移:dp[x] = dp[x-1] + dp[x-2]
      • 到达x阶台阶,我们可以由x-1阶+爬一阶,到达
      • 也可以由x-2阶+爬两阶,到达。
    • 这两种爬法的和即为,到达x阶总共的爬法。
  • base:
    • dp[0]=0
    • dp[1]=1
    • dp[2]=2:两个一阶 or 一个两阶

 

代码参考:

复制代码
 1 class Solution {
 2 public:
 3     //state:
 4     // x th stairs.
 5     //dp[x] : x stairs, the count of ways to climb
 6     //dp[x] = dp[x-1] + dp[x-2]
 7     //opt:
 8     //case_1: 1 step
 9     //case_2: 2 steps
10     //base: dp[0]=0, dp[1]=1, dp[2]=2.
11     int climbStairs(int n) {
12         int dp_1=1, dp_2=2;
13         int res=dp_2;
14         if(n==1) return dp_1;
15         if(n==0) return 0;
16         for(int i=3; i<=n; i++) {
17             res = dp_2+dp_1;
18             dp_1 = dp_2;
19             dp_2 = res;
20         }
21         return res;
22     }
23 };
复制代码

 

posted @   habibah_chang  阅读(33)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· Tinyfox 发生重大改版
点击右上角即可分享
微信分享提示