变态青蛙跳

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

题目描述

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

 

相比普通青蛙跳,这个 n级的就有点难了,重点是 能跳n级,  也就是说,只有当台阶数是1的时候,是1种跳法。

别说2阶是两种。。。

3阶 还 4种, 4 阶还 8种。 。。 。明显抬杠。。。。。。。穷举法做的吧?

因此只有将台阶 无限的化少,化少,直至 1阶,这样才能找到问题的解决办法。

 

那就要倒着想,如果多了一阶台阶,方法是多了多少呢?

因为我只知道 如果多 了一阶,别 之前的 跳法多了多少,不就能求出了当前台阶的跳法了吗。

 

数学思路:

当前台阶数的跳法,其实是 台阶数的所有 子集 台阶数的跳法(每个子集台阶,然后在直接一下跳到最后一阶)。

例如 5阶跳法,其实就是1阶的所有跳法+2阶的所有跳法+3阶的所有跳法+4阶的所有跳法+1(直接跳5阶)。 

累加的话就需要写一个  循环,将 n阶 一下一下减,直到1 ,然后将所有台阶跳法 求和,实现起来也不是很难,再写一个静态 sum 就好, 记录 总和

不过这样就会 循环 调用递归, 递归本身,再次循环,势必数据一多,就是 挂掉。

 

其他想法:

展现我灵魂画手的实力:

212842_hhOP_3192601.png

假设当前有 n(示意为4) 阶,跳法有x种。  

然后 加了 一阶 变为 n+1 

当台阶是加在4层上面的时候:

青蛙使用  了 x种方法  每种方法都能跳到  n阶上, 然后使用跳1 下的方法,跳上n+1阶。 

213900_wI7v_3192601.png

 

当台阶是加在1层下面,也就是让青蛙下一个台阶,总台阶还是 n+1 往上跳。 那么 开始跳1 ,然后剩余的 n阶 还是 x种跳法。

214953_aar8_3192601.png

至于台阶加在其他处,不过是将n阶  “挤” 成了第5阶,实质还是加了最后1阶。

一次 n阶方法的跳法 就是 2*(n-1) 阶的跳法。

 

 

代码:

public static int JumpFloorII(int target) {if(target==0){return 0;}if(target==1){return 1;}return JumpFloorII(--target)*2;}

 

错误的想法:

在我想如何组织语言,让你们接受  台阶加在 最顶层,还是最下层的时候,我差生了一个错误的想法, 

既然是 第一步跳1, 那么 我其实可以将 这多的1步,放在任何位置啊。

其实这是错误的想法, 这里面有严重的跳法重叠 。

比如说我 跳5阶前 加了一步, 跳到了 第6阶上。然后直接 跳最后一阶。

跟 

跳6阶的 跳法  中,然后直接跳到最后一阶 是重复的 跳法。

 

第一种是 5阶跳法 中间多跳1阶,然后跳最后。

第二种是原本的6阶跳法,直接跳 最后。

因此,这种思维是错误的。

我的想法:

感觉这个题目形容起来不是很清晰,看的话估计也不是很明白,这个题目给我的感觉就是,多一阶台阶后,其实中间台阶怎么跳法不介意,第一步只能多在 n-1阶跳法的 最前面,跟最后面, 也就是 2*(n-1)阶跳法。

无论怎么加在中间,肯定是 有重复的跳法。

 

 

转载于:https://my.oschina.net/u/3192601/blog/1558363

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django——认证系统(Day72)

阅读目录 COOKIE 与 SESSION 用户认证 COOKIE 与 SESSION 概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。 cookie的工作原理是:…

12-1 12 防盗链 访问控制 php解析 代理

2019独角兽企业重金招聘Python工程师标准>>> 12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109location优先级 http://blog.lishiming.net/?p10012.13 Nginx防盗链 用来…

图片预览------photoswipe 使用

photoswipe 使用 预览图片后,需要点击关闭按钮才能关闭,点击图片事件效果是放大图片,和微信的效果不一致,最后改用微信预览图片的接口了,但是例子可以用,记录一下!! http://www.cnbl…

SSKeychain

Keychain 使用? ---为了实用最大化我觉得我应该直接先说使用! 当然是使用第三方库啦:sskeychain 3000星星的库不开玩笑。github地址:https://github.com/soffes/sskeychain 导入完之后首先,编译一下有无错。 如果是自己手动导入&…

linux mysql提交_MySQL 事务提交过程

开发老大要求通过binlog查询一条被修改的数据,数据被查出后问我,有没有可能binlog中不会记录,回答不会,因为数据被修改,若失败直接回滚,不会在binlog中记录,此刻一个朋友用了洪荒之力告诉我&…

React单元测试:Jest + Enzyme(二)

前言 在上一篇教程中,我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试,可以点击这里回顾一下。今天,我们重点讨论如何通过Jest来mock数据。 什么是Mock Mock的简单翻译就是模拟。既可以模拟数据,也可以…

python dict hash算法_2020年3月26日python学习笔记——hash

什么是哈希?hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远…

数据处理不等式:Data Processing Inequality

我是在差分隐私下看到的,新解决方案的可用性肯定小于原有解决方案的可用性,也就是说信息的后续处理只会降低所拥有的信息量。 那么如果这么说的话为什么还要做特征工程呢,这是因为该不等式有一个巨大的前提就是数据处理方法无比的强大&#x…

gulp 实现sass自动化 ,监听同步

实现功能 监听scss文件   sass自动化 准备条件 1 .安装gulp npm init ---->一直enter,会在当前目录下生成一个package.json文件,记录安装的依赖模块 npm install gulp --save-dev 2 .安装gulp-ruby-sass npm install gulp-ruby-sass 你还需要安装ruby环境…

MSSQL → 02:数据库结构

一、数据库的组成 在SQL Server 2008中,用户如何访问及使用数据库,就需要正确了解数据库中所有对象及其设置。数据库就像一个容器,它里面除了存放着数据的表之外,还有视图、存储过程、触发器、约束等数据库对象。数据库管理的核心…

mySQL教程 第9章 触发器

第9章 触发器 入的新数据放到new表,删除的数据放到old表。 准备本章学习环境 连接数据库schoolDB,删除表TStudent,TScore和Tsubject中的所有数据。 delete from TStudent; delete from TScore; delete from TSubject; 向学生表插入两条记录 i…

掩码图制作photoshop__新手用

1.首先你得有一张图,比如这样的: 2.用PS打开他 3.左边工具栏里(快速选择工具W),选想显示的部分 4.ctrlc复制一下,新建一张黑底图粘贴上去或者白底图时选中显示区即花瓣右键反向右键填充成黑色 5.菜单栏->…

Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现

大体思路 前面我们实现了点击开始游戏按钮,系统依次给玩家发牌的逻辑和动画,并展示当前的手牌。这期我们继续实现接下来的功能--叫地主。 1.首先这两天,学习了DOTween,这是一个强大的Unity动画插件,大家可以参考&#…

Koa 中实现 chunked 数据传输

有关于 Transfer-Encoding:chunked 类型的响应,参见之前的文章HTTP 响应的分块传输。这里看 Koa 中如何实现。 Koa 中请求返回的处理 虽然官方文档有描述说明不建议直接调用 response.write: Bypassing Koas response handling is not supported. Avoid …

HTML5新特性之Mutation Observer

Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,Mutation Observer会得到通知。 要概念上,它很接近事件。可以理解为,当DOM发生变动会触发Mutation Observer事件。但是,它与…

Python操作MongoDB - 极简教程

2019独角兽企业重金招聘Python工程师标准>>> Python 连接 MongoDB 安装PyMongo模块 pip install pymongo使用MongoClient建立连接 from pymongo import MongoClient # 以下为三种建立连接的方式 #client MongoClient() #client MongoClient(localhost, 27017) #cl…

java 省市区三级联动_AJAX省市区三级联动下拉菜单(java版)

此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表:代码如下:建立数据库中的代码和一些配置文件信息就省略了,主要有JavaScript中的代码为:$(document).ready(function(){$.get("getProvince.do&…

20155305乔磊2016-2017-2《Java程序设计》第四周学习总结

20155305乔磊2016-2017-2《Java程序设计》第四周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行为。面向对象中,子类继承父类,就是把程序中相同的代码部分提升为父类。extends关键字,表示前者会扩充后者的行为&#xff…

【eclipse转idea的第一天】配置idea

为什么80%的码农都做不了架构师?>>> 导入maven项目 设置maven(全局) 为了不然才转idea的码友们重复我犯过的错,我这儿截图步骤说明下: 这里是列表文本这里是列表文本idea的设置有两种:全局,局部(我这么叫的…

Vmware 安装虚拟工具 (二)

打开虚拟机,以root超级用户登陆,菜单栏选择虚拟机,install安装虚拟机 拷贝虚拟工具到 在根目录下建立文件夹,并将工具拷贝到该文件夹,例如vmtool 打开终端,进入该目录开始安装 如图,进入目录解压…