zoukankan      html  css  js  c++  java
  • 12、【常见算法】跳台阶问题

    一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。

    问题分析:

    1 f(n) = f(n-1)= 1 n=1 
    2 f(n) = 1+1 = 2 n=2 当第一次跳一个台阶时,有一种方法,当第一次跳两个台阶时有一种方法 
    3 f(n) = 2+1 =3 n=3 当第一次跳一个台阶时有f(3-1)中方法,当第一次跳两个台阶时有f(3-2)中方法 
    4 因此,
    5 f(n) = f(n-1)+f(n-2) n>2 
     1 //跳台阶问题
     2 /**
     3     一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。
     4 */
     5 
     6 #include <iostream>
     7 
     8 
     9 using namespace std;
    10 
    11 #define NUM 2
    12 int steps[NUM] = {1, 2};
    13 
    14 
    15 int calPermNum(int num)
    16 {
    17     if(num == 1)
    18         return 1;
    19     else if(num == 2)
    20         return 2;
    21     else
    22         return calPermNum(num -1) + calPermNum(num - 2);
    23 }
    24 
    25 int main()
    26 {
    27     cout << calPermNum(3) << endl;
    28     return 0;
    29 }

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

     1 f(n) =f(n-1)= 1 n=1 
     2 
     3 f(n) = 1+1 = 2 n=2 当第一次跳一个台阶时,有一种方法,当第一次跳两个台阶时有一种方法 
     4 
     5 f(n) = 2+1 =3 n=3 当第一次跳一个台阶时有f(3-1)种方法,当第一次跳两个台阶时有f(3-2)种方法,当第一次跳3个台阶时有1种跳法 
     6 
     7 因此 
     8 
     9 f(n) = f(n-1)+f(n-2)+......f(1)+1种跳法
    10 f(n-1) = f(n-2)+f(n-3)+.....f(1)+1
    11 f(n)-f(n-1)=f(n-1)
    12 所以f(n) = 2*f(n-1)  n>2 
     1 //跳台阶2
     2 //一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
     3 #include <iostream>
     4 
     5 using namespace std;
     6 
     7 #define NUM 2
     8 int steps[NUM] = {1, 2};
     9 
    10 
    11 int calPermNum(int num)
    12 {
    13     if(num == 1)
    14         return 1;
    15     else if(num == 2)
    16         return 2;
    17     else
    18         return 2*calPermNum(num-1);
    19 }
    20 
    21 int main()
    22 {
    23     cout << calPermNum(5) << endl;
    24     return 0;
    25 }
  • 相关阅读:
    tornado源码分析-多进程
    create a cocos2d-x-3.0 project in Xcode
    记录自己的傻逼的错误:找不到或无法载入主类
    MVC5 Entity Framework学习之实现主要的CRUD功能
    Linux中实现多网卡绑定总结
    it码农之心灵鸡汤(一)
    【高级算法】遗传算法解决3SAT问题(C++实现)
    MySQL-分区表-1
    OpenSift源代码编译过程记录
    Android Studio 视图解析
  • 原文地址:https://www.cnblogs.com/Long-w/p/9797099.html
Copyright © 2011-2022 走看看