洛谷P1192-台阶问题(线性递推 扩展斐波那契)

占坑

先贴上AC代码 回头来补坑

#include <iostream>
using namespace std;
int n, k;
const int mod = 100003;
long long f[1000000];
int main()
{
	cin >> n >> k;
	f[0] = 1;
	for (int i = 1; i <= n; i++) {
		if (i <= k) {
			//当 当前阶梯 小于一次性可以跨越的阶梯的时候
			for (int j = 0; j < i; j++) {
				f[i] += f[j]; f[i] %= mod;
			}
		}
		if (i > k) {//扩展 n 级斐波那契 从当前位置的前k个相加
			for (int j = i - 1,tmp = k; tmp > 0; j--, tmp--) {
				f[i] += f[j]; f[i] %= mod;
			}
		}
	}
	cout << f[n] << endl;
	system("pause");
	return 0;
}
posted @ 2019-11-26 16:33  _starsky  阅读(129)  评论(0编辑  收藏  举报