变态青蛙跳

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,一经查实,立即删除!

相关文章

中间的数(若已经排好序)

描述&#xff1a; 奇数个&#xff0c;输出中间那个 偶数个&#xff0c;输出中间那俩 代码&#xff1a; #include<iostream>using namespace std;int main(){ int *a; int n; cin>>n; anew int[n]; for(int i0; i<n; i) cin>>a[i]; …

leetcode1237. 找出给定方程的正整数解(二分法)

给出一个函数 f(x, y) 和一个目标结果 z&#xff0c;请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。 给定函数是严格单调的&#xff0c;也就是说&#xff1a; f(x, y) < f(x 1, y) f(x, y) < f(x, y 1) 函数接口定义如下&#xff1a; interface CustomFunc…

数据库 测试数据生成_我们的测试数据生成器如何使假数据看起来真实

数据库 测试数据生成by Tom Winter汤姆温特(Tom Winter) 我们的测试数据生成器如何使假数据看起来真实 (How our test data generator makes fake data look real) We recently released DataFairy, a free tool that generates test data. But first, let me tell you the st…

tp框架生命周期

1、入口文件 用户发起的请求都会经过应用的入口文件&#xff0c;通常是 public/index.php文件。当然&#xff0c;你也可以更改或者增加新的入口文件。 通常入口文件的代码都比较简单&#xff0c;一个普通的入口文件代码如下&#xff1a; // 应用入口文件 // 定义项目路径 d…

django 创建mysql失败_创建表时出现Django MySQL错误

我正在用MySQL数据库构建一个django应用程序。当我第一次运行“python manage.py migrate”时&#xff0c;一些表创建得很好&#xff0c;然后出现一些错误。出现的错误是&#xff1a;django.db.utils.IntegrityError: (1215, Cannot add foreign keyconstraint)当我运行这个MyS…

Laravel数据库迁移和填充(支持中文)

写在前面 经常我们做项目都团队协作开发&#xff0c;每个人都在自己本地的数据库&#xff0c;如果你曾经出现过让同事手动在数据库结构中添加字段的情况&#xff0c;数据库迁移可以解决你这个问题。 不仅如此&#xff0c;在线上部署的时候&#xff0c;也避免了手动导入数据库或…

leetcode374. 猜数字大小(二分法)

猜数字游戏的规则如下&#xff1a; 每轮游戏&#xff0c;系统都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了&#xff0c;系统会告诉你这个数字比系统选出的数字是大了还是小了。 你可以通过调用一个预先定义好的接口 guess(int num) 来获取猜测结果…

什么情况下你的工作最为成功_如何在没有工作经验的情况下获得技术工作

什么情况下你的工作最为成功by Anthony Sistilli安东尼西斯蒂里(Anthony Sistilli) 如何在没有工作经验的情况下获得技术工作 (How to get a tech job with no previous work experience) I run a free community called the Forge where I help students navigate the world …

jquery批量删除

前台代码 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0">…

MUI 里js动态添加数字输入框后,增加、减少按钮无效

https://www.cnblogs.com/ssjf/p/10193652.html numbox 的自动初化是在 mui.ready 时完成的mui 页面默认会自动初始化页面中的所有数字输入框&#xff0c;动态构造的 DOM 需要进行手动初始化。比如&#xff1a;您动态创建了一个 ID 为 abc 的数字输入框&#xff0c;需要 mui(#a…

Django——认证系统(Day72)

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

description方法

1.description基本概念 NSLog("%", objectA);这会自动调用objectA的description方法来输出ObjectA的描述信息. description方法默认返回对象的描述信息(默认实现是返回类名和对象的内存地址) description方法是基类NSObject 所带的方法,因为其默认实现是返回类名和…

leetcode面试题 10.05. 稀疏数组搜索(二分法)

稀疏数组搜索。有个排好序的字符串数组&#xff0c;其中散布着一些空字符串&#xff0c;编写一种方法&#xff0c;找出给定字符串的位置。 示例1: 输入: words [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s “ta” 输出…

laravel框架制作缩略图和水印

1.首先需要使用 composer 在命令行安装最新版本的 intervention/image &#xff1a; composer require intervention/image2.注册服务提供者及别名&#xff08;Laravel 版本 ≤ 5.4&#xff09; 如果你的 laravel 版本小于或等于 5.4&#xff0c;安装后需要注册服务提供者和别…

mysql 模糊查询 tp框架_TP框架中模糊查询实现

TP框架中模糊查询实现$where[g.name] array(like,%.$groupname.%);表达式查询上面的查询条件仅仅是一个简单的相等判断&#xff0c;可以使用查询表达式支持更多的SQL查询语法&#xff0c;查询表达式的使用格式&#xff1a;$map[字段1] array(表达式,查询条件1);$map[字段2] ar…

肉体之爱的解释圣经_可以解释的AI简介,以及我们为什么需要它

肉体之爱的解释圣经by Patrick Ferris帕特里克费里斯(Patrick Ferris) 可以解释的AI简介&#xff0c;以及我们为什么需要它 (An introduction to explainable AI, and why we need it) Neural networks (and all of their subtypes) are increasingly being used to build pro…

Python可变与不可变类型及垃圾回收机制

1. 可变与不可变类型 1.1 可变类型 在id不变的情况下&#xff0c;value可以改变&#xff0c;则称之为可变类型。列表、字典与集合是可变的。 l1 [1,2,3,4,5] print(id(l1)) l1[1] 520 #改变列表元素 print(id(l1)) result&#xff1a; 1700748379208 …

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防盗链 用来…

leetcode911. 在线选举(二分法)

在选举中&#xff0c;第 i 张票是在时间为 times[i] 时投给 persons[i] 的。 现在&#xff0c;我们想要实现下面的查询函数&#xff1a; TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。 在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下&…

1-13句子逆序

题目描述 将一个英文语句以单词为单位逆序排放。例如“I am a boy”&#xff0c;逆序排放后为“boy a am I”所有单词之间用一个空格隔开&#xff0c;语句中除了英文字母外&#xff0c;不再包含其他字符 接口说明 /** * 反转句子 * * param sentence 原句子 * return 反转后的…