1. 程式人生 > 實用技巧 >C++程式演算法題----上臺階2

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

執行結果: