算法题: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步,求总共有多少种走法?相关推荐

  1. N级台阶,一次上1级或2级或3级或M级,总共有多少种走法

    思路 先分析最简单的,也就是每次要不上1级,要么上2级. 这个问题需要反过来思考才能比较容易的找到规律.总共有N级台阶,因为每次要么上1级要么上2级,因此对于第N级台阶来说,它的前一步要么是在N-1级 ...

  2. 有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。

    /*  * 有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法.   分析: 动态规划的实现的关键在于能不能准确合理的   用动态规划表来抽象出实际问题.在这个问题上,我们让f(n)表 ...

  3. 一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳上3级 请问跳100级有多少种方法?

    一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳上3级 请问跳100级有多少种方法? 动态规划?错了请骂我 public void solve(){String dp[] = new Strin ...

  4. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? private static HashMap<Integer, Long> record = n ...

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

    一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法? 解题思路 :每次跳1到n,那么如果是n阶台阶,一次就可能跳1~n阶(话说n=1000,青蛙腿肯定绑火箭了),乍一 ...

  6. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...

  7. 【python逻辑算法题】一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法

    文章目录 一.题目描述 二.问题分析 三.代码分析与逻辑(python3实现) 四.源码及运行结果 总结 提示:以下是本篇文章正文内容: 一.题目描述 题目:一只青蛙一次可以跳上1级台阶,也可以跳上2 ...

  8. c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此 ...

  9. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

最新文章

  1. 物体检测中的评价指标【文末赠书】
  2. php正则替换图片地址,求教 php正则把图片地址前部分替换
  3. 我的工作日志 - 2020年11月11日星期三 阴
  4. oracle mysql 创建表,Oracle 创建表用户、空间
  5. [蓝桥杯][2018年第九届真题]迷宫与陷阱(三维数组标记BFS)
  6. ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await
  7. bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验
  8. WordPress 主题教程 #4b:Header 模板 2
  9. onSaveInstanceState() 和 onRestoreInstanceState()
  10. Windows 7 / Windows 10 安装 IPX/SPX
  11. k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务...
  12. 电子邮件是html文件吗,如何在电子邮件正文中嵌入HTML文件
  13. 高效记忆/形象记忆(05)110数字编码表 0-9
  14. Velero备份实战 - 基于Ceph的CSI快照
  15. 逝去的2018年,年度总结
  16. IMPLEMENT_DYNAMIC
  17. 源码之家(源代码下载分享)
  18. 地铁中计算机网络专业,计算机网络技术在地铁AFC系统中的应用原稿(全文完整版)...
  19. [NCTF 2018]签到题
  20. JSON.stringify() 详解

热门文章

  1. 活动|美团0.98充10元话费,秒到账,不实名不绑卡,超简单!
  2. SLAM中双目三角化
  3. vmstate内存事件详解
  4. 3ds max中的对象绕局部坐标系旋转的动画
  5. Cortex-A8处理器编程(上)
  6. c语言埃拉托色尼筛选法数组,埃拉托色尼筛选法 算法
  7. Vulnhub-Moneybox
  8. Nginx安装成windows server 2016机器的服务
  9. cesium实现简单地图展示
  10. 10岁自闭症小孩,妈妈带她几次粪菌移植治疗后,自闭行为有所改善