C++程式演算法題----上臺階2
阿新 • • 發佈:2020-09-17
題目:
小瓜想走上一個一共有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; }
執行結果: