N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法?
算法题:N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法?
平常不怎么研究算法,直到一次面试后,面试官给我了一个算法题,因为平常没有去看过类似的东西,所以就做错了
根据上面的题目我们可以先暴力解题,假设N=3,那么走法就有以下4种:111,12,21,3。
根据这个规则我们可以发现,步数都是由1,2,3个相加形成,简单的解题可以使用递归:
static int suanFaTest(int len){if(len == 0){return 0;}else if(len == 1){return 1;}else if(len == 2){return 2;}else if(len == 3){return 4;}else {return suanFaTest(len - 1)+suanFaTest(len - 2)+suanFaTest(len - 3);}}
但是如果面试官比较变态,让你把每一种走法都输出,有下面这种方法:
static final int s = 3; //自定义的台阶数static int len = 0, sum = 0;//最多也只有走100步就到了static int step[] = new int[s];//3static void compute(final int stair) {if (stair < 0)return;//表示已经走完了if (stair == 0) {printSum();sum++;return;}//每次到下一步选择时都可以走1-3步for (int i = 1; i <= 3; i++) {step[len] = i;len++;//进行下一步的迭代,迭代完之后将每后加上的一步去掉,换成其它的步数(如从1换成2)compute(stair - i);len--;}}static void printSum() {System.out.print("走法:");for (int i = 0; i < len; i++)System.out.print(step[i] + " ");System.out.println();}public static void main(String[] args) {compute(s);System.out.println("共有" + sum + "种走法");}
输入5,控制台输出如下:
我第一次写记录代码生活,如果对你有帮助,我会很高兴~
如果你们有其它解题思路我们可以一起讨论
N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法?相关推荐
- N级台阶,一次上1级或2级或3级或M级,总共有多少种走法
思路 先分析最简单的,也就是每次要不上1级,要么上2级. 这个问题需要反过来思考才能比较容易的找到规律.总共有N级台阶,因为每次要么上1级要么上2级,因此对于第N级台阶来说,它的前一步要么是在N-1级 ...
- 有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
/* * 有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法. 分析: 动态规划的实现的关键在于能不能准确合理的 用动态规划表来抽象出实际问题.在这个问题上,我们让f(n)表 ...
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳上3级 请问跳100级有多少种方法?
一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳上3级 请问跳100级有多少种方法? 动态规划?错了请骂我 public void solve(){String dp[] = new Strin ...
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? private static HashMap<Integer, Long> record = n ...
- 一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法?
一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法? 解题思路 :每次跳1到n,那么如果是n阶台阶,一次就可能跳1~n阶(话说n=1000,青蛙腿肯定绑火箭了),乍一 ...
- [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...
- 【python逻辑算法题】一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法
文章目录 一.题目描述 二.问题分析 三.代码分析与逻辑(python3实现) 四.源码及运行结果 总结 提示:以下是本篇文章正文内容: 一.题目描述 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2 ...
- c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此 ...
- 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...
最新文章
- 物体检测中的评价指标【文末赠书】
- php正则替换图片地址,求教 php正则把图片地址前部分替换
- 我的工作日志 - 2020年11月11日星期三 阴
- oracle mysql 创建表,Oracle 创建表用户、空间
- [蓝桥杯][2018年第九届真题]迷宫与陷阱(三维数组标记BFS)
- ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await
- bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验
- WordPress 主题教程 #4b:Header 模板 2
- onSaveInstanceState() 和 onRestoreInstanceState()
- Windows 7 / Windows 10 安装 IPX/SPX
- k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务...
- 电子邮件是html文件吗,如何在电子邮件正文中嵌入HTML文件
- 高效记忆/形象记忆(05)110数字编码表 0-9
- Velero备份实战 - 基于Ceph的CSI快照
- 逝去的2018年,年度总结
- IMPLEMENT_DYNAMIC
- 源码之家(源代码下载分享)
- 地铁中计算机网络专业,计算机网络技术在地铁AFC系统中的应用原稿(全文完整版)...
- [NCTF 2018]签到题
- JSON.stringify() 详解