《剑指offer》变态跳台阶

本文通过动态规划的方法解决了一个经典的青蛙跳台阶问题。该问题允许青蛙每次跳跃的高度从1到n级台阶,并探讨了所有可能的跳跃组合。文章提供了一个Java实现方案,详细解释了如何计算青蛙达到顶层的所有可能路径数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

分析:由上一篇跳台阶知道f(n)=f(n-1)+f(n-2)种,现在可以跳n阶,则,f(n)=f(n-1)+f(n-2)+.....f(n-n)种,即第n阶依赖于前面所有的可能性之和,所以可以用动态规划的思想解决

public class Solution {
    //动态规划问题,当前问题的解依赖于之前的解
	//n 0 1 2 3 4 5
	    
	//v 1 1 2 4 8 16
    public int JumpFloorII(int target) {
        	if(target==0||target==1){
	    		return 1;
	    	}
	    	//创建dp数组用于保存当前的值,最后返回的值就是最后要求的了
	    	int [] dp = new int[target+1];
	    	dp[0]=1;
	    	dp[1]=1;
	    	for(int i=2;i<=target;i++){
	    		for(int j=0;j<i;j++){
	    			dp[i]+=dp[j];
	    		}
	    	}
	       //返回数组的最后一位
	       return dp[target];
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值