一只青蛙跳台阶一次可以跳1阶可以跳2阶,台阶为n时有多少种跳法java实现
时间: 2024-03-11 12:51:16 浏览: 62
好的,下面是 Java 实现:
```java
public int jump(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
int[] dp = new int[n + 1];
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
```
当 n=3 时,结果为 3;当 n=4 时,结果为 5;当 n=5 时,结果为 8,以此类推。
相关问题
一只青蛙跳台阶一次可以跳1阶可以跳2阶,台阶为n时有多少种跳法
这道题可以用动态规划的思想来解决。考虑青蛙跳到第 n 级台阶,它可以从第 n-1 级台阶跳上来,也可以从第 n-2 级台阶跳上来。因此,如果设 dp(n) 表示跳到第 n 级台阶的跳法总数,那么有:
dp(n) = dp(n-1) + dp(n-2)
初始值为 dp(1) = 1,dp(2) = 2。因为只有一级台阶时只能跳一步,两级台阶时可以跳两步或分两次跳一步。
最终的答案就是 dp(n)。可以使用循环来依次计算 dp(3) 到 dp(n)。时间复杂度为 O(n)。
下面是示例代码:
```python
def jump(n):
if n == 1:
return 1
if n == 2:
return 2
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
```
当 n=3 时,结果为 3;当 n=4 时,结果为 5;当 n=5 时,结果为 8,以此类推。
只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。java代码实现
这个问题属于动态规划的经典问题,通常被称为“爬楼梯”或“斐波那契数列”的变体。青蛙跳上n级台阶的方案可以通过计算前两个阶段的方案数得到。当青蛙能直接跳到第n级时,它有两种选择:从第n-1级跳或者从第n-2级跳。所以,对于任意n,总的跳法数等于跳n-1级的方案数加上跳n-2级的方案数。
Java代码实现如下:
```java
public class Solution {
public int jump(int n) {
if (n <= 0) return 0;
// 初始化数组,存储每个位置的最大跳跃次数
int[] dp = new int[n + 1];
dp[0] = 1; // 跳0级只有1种方法
dp[1] = 1; // 跳1级也只有1种方法
for (int i = 2; i <= n; ++i) {
// 对于每个位置,如果可以从当前位置直接跳到终点,则将到达终点的方法数加入结果
if (i + 1 <= n) {
dp[i] += dp[i + 1]; // 直接跳一步
}
// 如果可以从当前位置跳两步到达,则也将到达终点的方法数加入结果
if (i + 2 <= n) {
dp[i] += dp[i + 2]; // 跳两步
}
}
return dp[0]; // 返回达到n级的最短路径数
}
}
```
阅读全文