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;
}

運行結果:



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM