zoukankan      html  css  js  c++  java
  • 【9301】走楼梯

    Time Limit: 10 second
    Memory Limit: 2 MB

    问题描述
    楼梯有n级台阶,上楼可以一步上一个台阶,也可以一步上两个台阶。编写一递归程序计算共有多少种不同的走法?

    Input

    输入台阶数n

    Output

    输出走法总数

    Sample Input

    3
    
    

    Sample Output

    3
    
    

    【题解】

    可以先想想简单的情况,到达第一级阶梯,只有一种方法,就是从地面到第一级。然后是第二级阶梯,可以从地面直接上两级 直接到第二级,也可以从地面到第一级然后到第二级。

    所以a[1] = 1,a[2] = 2;则第三层可以从第1层上两层到,也可以从第二层直接上一层就到。所以a[3] = a[1] + a[2];以此类推。

    可以得出递推公式a[i] = a[i-1] + a[i-2];

    【代码】

    #include <cstdio>
    #include <stdlib.h>
    
    int n,a,b,c;
    
    void input_data() //输入n
    {
        scanf("%d",&n);
        a = 1;
        b = 2;
    }
    
    void get_ans()
    {
        if (n == 1) //首先要対n == 2和 n==1 的情况进行特判。
            {
                printf("%d
    ",a);
                exit(0);
            }
        if (n == 2)
            {
                printf("%d",b);
                exit(0);
            }
        for (int i = 3;i <= n;i++) //大于等于3的情况则要递推,用a,b,c三个变量循环使用
            {
                c = a + b;
                a = b; b = c;
            }
        printf("%d",c); //最后输出c
    }
    
    int main()
    {
        input_data();
        get_ans();
        return 0;
    }
    


  • 相关阅读:
    【LeetCode-位运算】汉明距离总和
    python类的继承和重写
    单元测试unittest使用说明
    Java学习90
    Java学习89
    Java学习88
    Java学习87
    Java学习86
    Java学习85
    Java学习84
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632429.html
Copyright © 2011-2022 走看看