爬台阶问题 动态规划 Java 代码 简单
时间: 2024-10-21 22:15:33 浏览: 16
基于Java的台阶问题源码.zip
爬台阶问题是一个经典的动态规划问题,通常用来解释递归算法如何通过构建一个表格来避免重复计算。假设我们有一个人,他可以一次跨1阶或2阶上楼,问从楼下到楼上n阶有多少种不同的走法。我们可以用动态规划的思想解决它。
在Java中,代码大致如下:
```java
public class ClimbingStairs {
public int climbStairs(int n) {
if (n <= 2) { // 基本情况,直接返回结果
return n;
}
// 初始化一个长度为n+1的数组,dp[i]表示到达第i阶的不同走法
int[] dp = new int[n + 1];
dp[0] = 1; // 第0阶有一种走法:不爬
dp[1] = 1; // 第1阶有两种走法:一步一阶或不上
dp[2] = 2; // 第2阶有三种走法:两步一阶、一步一阶加一步、都不上
// 使用循环,自底向上填充dp数组
for (int i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2]; // 当前步数等于之前两步之和,因为可以先上1阶再上1阶,也可以先上2阶
}
return dp[n]; // 返回到达第n阶的走法总数
}
}
```
阅读全文