• 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 }
  • 相关阅读:
    window.open() 使用详解
    20151117
    20151116
    打开一个网页并弹窗提示,点击确定后2秒后关闭
    网页制作中的一点问题及解决方案
    Android WebView 开发详解(二)
    Android WebView 开发详解(一)
    Android:控件WebView显示网页
    Dagger 2: Step To Step
    Introducing RecyclerView(二)
  • 原文地址:https://www.cnblogs.com/Long-w/p/9797099.html
Copyright © 2020-2023  润新知