問題解決のアイデア:まず、我々は、I [i]はDPを定義する列をタイル張り、いくつかの方法で、我々勃起した場合の3つの方法の合計は、3 * 2、ときよりアウト1のを考えると、我々は、2 * 2を検討我々は2つの3件のの舗装された場合である* 2 2、または3の方法と時間に直接プット数、DP [I-1]、多数の方法は、我々は2つだけと横を置くことができます実際のメソッドの数と重複の前のこの時間は、これだけ[I-2] 2 * DPを追加するので、最後に大きなもの、なぜ、最後に2を入れていません。
そのようにして得られた:DP [I] =(DP [I-1] + 2 * DP [I-2])%100007。
#include<stdio.h>
int dp[255];
int main(){
int n;
scanf("%d",&n);
dp[0]=1;
dp[1]=1;
for(int i=2;i<=n;i++){
dp[i]=(dp[i-1]+2*dp[i-2])%100007;//及时取模
}
printf("%d\n",dp[n]);
return 0;
}
手鑑賞にBO賞賛のポイントについてのヘルプも非常に素晴らしいがありますされます