P1192 台階問題

2021-10-02 22:26:48 字數 864 閱讀 5897

題目描述

有n級的台階,你一開始在底部,每次可以向上邁最多k級台階(最少11級),問到達第n級台階有多少種不同方式。

輸入格式

兩個正整數n,k。

輸出格式

乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ans mod 100003後的結果。

輸入輸出樣例

輸入 #1

5 2

輸出 #1

說明/提示

對於20%的資料,有n ≤ 10, k ≤ 3;

對於40%的資料,有n≤1000;

對於100%的資料,有n≤100000,k≤100。

result[i]代表i級台階總共有多少走法。

按遞增順序分別求出2-n級台階各有多少種走法,這樣求的目的是該問題具有子問題重疊性質(動態規劃法)。即後面的計算會使用到前面計算的結果。n級台階走法的總數為第一次走j(j從1到min(n,k))級台階,剩下的n-j級台階的走法之和。舉例說明:

如n=3,k=2

即3級台階每次可以向上邁最多2級台階的走法總數為

第一次走1級台階,剩下2級台階的走法總數(2種)加

第一次走2級台階,剩下1級台階的走法總數(1種)的和1+2=3;

每次計算的結果記得對100003求餘。

#include

using

namespace std;

int result[

100000+5

];//全域性變數初始值為0

intmain()

} cout<

}

P1192 台階問題

遞推問題,要用到遞推式 設f n 為n個台階的走法總數,把n個台階的走法分成k類 第1類 第1步走1階,剩下還有n 1階要走,有f n 1 種方法 第2類 第1步走2階,剩下還有n 2階要走,有f n 2 種方法 第3類 第1步走3階,剩下還有n 3階要走,有f n 3 種方法 第k類 第1步走k階...

P1192 台階問題 遞推

有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少1級 問到達第n級台階有多少種不同方式。輸入格式 兩個正整數n,k。輸出格式 乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ansmod100003後的結果。輸入樣例 1 複製 5 2輸出樣例 1 複製 8對於20 20 20 的...

P1192 台階問題(遞推)

題目描述 有n級的台階,你一開始在底部,每次可以向上邁最多k級台階 最少11級 問到達第n級台階有多少種不同方式。輸入輸出格式 輸入格式 兩個正整數n,k。輸出格式 乙個正整數,為不同方式數,由於答案可能很大,你需要輸出ans mod 100003後的結果。輸入輸出樣例 輸入樣例 1 5 2輸出樣例...