思路来得太慢,好想拿小锤锤捶自己哟~~~

第一种,递归思路。

如果你上10个台阶,可以分解成下面两种情况:

● 上9个台阶,最后上1个台阶。假设这种情况下,上前面9个台阶的方法数为m。

● 上8个台阶,最后上2个台阶。假设这种情况下,上前面8个台阶的方法数为n。

所以,上10个台阶的方法数,其实就是 m + n。

可以递归为:

f(n) = f(n - 1) + f(n - 2),   n > 2

f(n) = 2                      ,   n = 2

f(n) = 1                       ,   n = 1

    private static int step(int n) {if (n == 1) return 1;if (n == 2) return 2;else return step(n - 1) + step(n - 2);}

第二种,排列思路。

10个台阶,全部都走两步的话,无非就是5个两步。

● 全是一步,10个一步。1种。

● 1个两步,8个一步。相当于从9个坑里放1个两步。9C1 = 9种。

● 2个两步,6个一步。相当于从8个坑里放2个两步。8C2 = 28种。

● 3个两步,4个一步。相当于从7个坑里放3个两步。7C3 = 35种。

● 4个两步,2个一步。相当于从6个坑里放4个两步。6C4 = 15种。

● 5个两步。1种。

所以一共有:1 + 9 + 28 + 35 + 15 + 1 = 89种。

10个台阶,每次只能上1个或者2个,一共有多少种走法相关推荐

  1. n个台阶,每次只能走一步或者两步,求多少种走法

    最重要的就是最后一步:如果走一步就需要f(n-1)种,如果走两步就需要f(n-2)种 走一个台阶:1种-f(1) 走两个台阶:2种-f(2) 三个台阶:先走一个台阶f1和最后一次走两个台阶:f(1)先 ...

  2. 编程题-有n步台阶一次只能上1步或2步共有多少种走法

    问题: 有n步台阶,一次只能上1步或2步,请共有多少种走法,请使用编程实现. 编程题实现: 方法1-递归 //实现f(n):求n步台阶,一共有几种走法public int f(int n){if(n& ...

  3. 算法! 有n步台阶,一次只能上1步或2步,共有多少种走法

    有2种算法, 递归和循环迭代, 依次介绍并比较 1.递归 1步台阶, 一种走法, 即f(1)=1; 2步台阶, 2种走法, 一步加一步或是直接跨两步, 即f(2)=2 3步台阶, 最后一次要么跨1步, ...

  4. 详细解答【算法题】9个台阶,每次只能上1个或者2个,一共有多少种走法?

    前言 看到这道题感觉还挺有意思的,自己第一时间并没有想出来,是看了类似博文后才豁然开朗,但是我看到的博文中都没有将下面这个数列的来龙去脉说明清楚, f ( n ) = f ( n − 1 ) + f ...

  5. 走台阶一共有多少种走法

    可以走1台阶 2台阶 3台阶 long long MoveStairs(int total){if (total < 4) {return total == 3 ? 4 : total;}int ...

  6. 有N个台阶,可以走两步也可以走一步 一共有多少种走法

    递归的思想: 走1步则还剩余n-1个台阶, 走2步则还剩余n-2个台阶. 分别接着去求出n-1和n-2个台阶的走法. public int CountNumber(int n){ if(n<1) ...

  7. C语言题目地图上有m个城市,序号依次为1,2,3....m,刚开始你在1,若每次只能从当前城市去往当前序号加1或者加3的城市,要到达m城市(m3),有多少种走法

    地图上有m个城市,序号依次为1,2,3....m,刚开始你在1,若每次只能从当前城市去往当前序号加1或者加3的城市,要到达m城市(m>3),有多少种走法 要想到达m,则前一个应该是m - 1或者 ...

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

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

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

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

最新文章

  1. 人要懂得放下已经发生,却又无法改变的事情
  2. 编程模拟洗牌和发牌过程c语言,洗牌发牌模拟系统课程设计报告.doc
  3. 如何开发一个区块链应用程序
  4. 「每周论文推荐」 初入深度学习CV领域必读的几篇文章
  5. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(1):Mybatis和Hibernate概念理解...
  6. 自学php心得体会,php5 学习心得
  7. Exchange2003-2010迁移系列之六,配置及配置第二台Exchange CAS/HUB服务器
  8. 【Android 启动过程】Activity 启动源码分析 ( Activity -> AMS、主线程阶段 )
  9. openssh 7.4 java使用_openssh/openssl升级到7.4和1.0.2j 源码方式
  10. 阿里巴巴java开发手册学习
  11. 2018常见的java面试题_2018新版Java常见面试题
  12. S4 exercise -- 模块
  13. Linux进程+进程间通信IPC
  14. Juypter 代码自动补全
  15. 全网首发Oreo易支付开源+教程
  16. opencv 伽马变换
  17. B站赴美上市;刘炽平减持100万股腾讯股份;《花花公子》删除官方Facebook账户丨价值早报
  18. ERROR: [Synth 8-439] module ‘xxx‘ not found not found 错误解决办法
  19. 古典密码(单表密码,维吉尼亚密码,普莱费尔密码,一次一密)
  20. 海思芯片-Hi3512参数规格介绍

热门文章

  1. python武功秘籍解压密码_压缩解压
  2. 爱好高科技之人脸识别模块
  3. qt界面和python怎么交互_python使用Qt界面以及逻辑实现
  4. 旅游商城小程序怎么做?
  5. Geth命令选项介绍
  6. 移动魔百盒M301H 强刷固件及教程
  7. Python Gensim文本分析——从文本预处理到TFIDF、LDA建模分析
  8. java证书验证失败_解决https证书验证不通过的问题
  9. 7-1 组织星期信息 (10分)
  10. csv导入phpmyadmin第一行列数错误