问题描述:
有2*n 的地板,用1*2和 2*1 的骨牌进行铺地板。问共有多少种情况。结果对 999983 取余,1<=n<=10000
样例输入:
输入:
6
输出:
13
思路:
DP问题:找规律可以发现满足斐波那契数列
dp[1] = 1, dp[2] = 2, dp[3] = 3, dp[4] = 5, ...
定义一维dp数组,存放已经计算过的结果
#include <cstdio>
const int maxn = 10010;
int dp[maxn] = {0};
int main(){
int n;
scanf("%d", &n);
dp[1] = 1;
dp[2] = 2;
for(int i = 3; i <= n; i++){
dp[i] = (dp[i - 1] + dp[i - 2]) % 999983;
}
printf("%d", dp[n]);
return 0;
}