題目描述
有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輸出樣例...