• C++程序算法题----上台阶2


    题目:

    小瓜想走上一个一共有n级的台阶,由于小瓜的腿长比较特殊,他一次只能向上走1级或者3级或者5级台阶。小瓜想知道他有多少种方法走上这n级台阶,你能帮帮他吗?

    Input

    一行一个整数n(n<=100000),表示一共有n级台阶。

    Output

    一行一个整数,表示小瓜上台阶的方案数对100003取余的结果。

    Sample Input

    3

    Sample Output

    思路:

    运用动态规划的思想,假如一共有n阶台阶,因为只能走1、3、5级,那么到达第n阶台阶就有三种情况,即当到达(n-1)时走1阶,到达(n-3)时走3阶,到达(n-5)时走5阶,依此类推,要求是前提是n>5.如果n<5,那么在可接受范围内,计算作为初始值。当然还有最重要一步的就是对每个求得得数求余,避免数据过大溢出。

    #include<iostream>
    using namespace std;
    long step[1000003] = {0};
    int main(){
        int N;
        cin>>N;
        if(N<=0){
            return 0;
        }
        step[0] = 1;
        step[1] = 1;
        step[2] = 2;
        step[3] = 3;
        step[4] = 5;
        if(N<=5){
            cout<<step[N-1]<<endl;
            return 0;
        }
        for(int i=5;i<N;i++){
            step[i]= (step[i-1]+step[i-3]+step[i-5])%100003;
        }
        cout<<step[N-1]<<endl;
    }
    

    运行结果:


  • 相关阅读:
    vector
    vector-back
    vector-back
    vector-begin
    vector-begin
    vector-at
    vector-at
    Vector-assign
    Vector-assign
    Vector-Constructors
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/13683304.html
Copyright © 2020-2023  润新知