博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
变态跳台阶
阅读量:4212 次
发布时间:2019-05-26

本文共 622 字,大约阅读时间需要 2 分钟。

题目描述

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

 

解题思路

动态规划

public int JumpFloorII(int target) {    int[] dp = new int[target];    Arrays.fill(dp, 1);    for (int i = 1; i < target; i++)        for (int j = 0; j < i; j++)            dp[i] += dp[j];    return dp[target - 1];}

数学推导

跳上 n-1 级台阶,可以从 n-2 级跳 1 级上去,也可以从 n-3 级跳 2 级上去...,那么

f(n-1) = f(n-2) + f(n-3) + ... + f(0)

同样,跳上 n 级台阶,可以从 n-1 级跳 1 级上去,也可以从 n-2 级跳 2 级上去... ,那么

f(n) = f(n-1) + f(n-2) + ... + f(0)

综上可得

f(n) - f(n-1) = f(n-1)

f(n) = 2*f(n-1)

所以 f(n) 是一个等比数列

public int JumpFloorII(int target) {    return (int) Math.pow(2, target - 1);}

转载地址:http://udkmi.baihongyu.com/

你可能感兴趣的文章
忘记oracle的sys用户密码怎么修改
查看>>
科德十二定律(Codd's 12 rules)
查看>>
VBS ConvertToXlsx
查看>>
Java位运算总结:位运算用途广泛
查看>>
(Kettle)合并记录步骤
查看>>
XML5个转义符
查看>>
js获取json对象键名及值
查看>>
有向无环图
查看>>
word 2007 中插入图片无法显示,只能显示底部一部分
查看>>
金字塔分组算法
查看>>
Kettle与Java集成——Java代码调取运行资源库的Transformation
查看>>
MySQL验证是否字符是日期串
查看>>
函数嵌套例子
查看>>
style 页面
查看>>
导航条下拉菜单
查看>>
图像透明度
查看>>
图片切割
查看>>
java kettle v2
查看>>
jQuery中断跳转
查看>>
Eclipse下Nodejs项目配置步骤
查看>>