目录
菜鸟做题,语言是 C++
1 70. 爬楼梯
核心思想:把总问题拆解为若干子问题。
- 总问题:上到 5 楼的方式有多少种
- 子问题:上到 4 楼的方式有多少种、上到 3 楼的方式有多少种
- 总问题 = 子问题 1 + 子问题 2
因为题目要求每次只能爬 1 或 2 个台阶,所以子问题只有两个。
1.1 基本思路
假设按照英国算法要爬 6 层楼,如下图所示:
使用一个名为 dp 的数组来存储爬到每一层楼的方式种数。
由于我们只能从 4 或 3 楼爬到 5 楼,因此爬到 5 楼的方式种数 = 爬到 4 楼的方式种数 + 爬到 3 楼的方式种数,即 dp[5] = dp[4] + dp[3],以此类推。
特别地,对于 0 楼和 1 楼,由于只有一种方式爬到它们,因此直