算法競(jìng)賽2022年第十三屆藍(lán)橋杯C++ B組_積木畫(huà)
#include<iostream>??
#include<algorithm>
?
using namespace std;
const int N = 1e7+7, mod = 1e9+7;
int f[N][4];
int n;
int main()
{
cin >> n;
//n=3;
f[1][0] = 1;//? 空白2X1
f[1][1] = 0;//? 下空白1X1
f[1][2] = 0;//? 上空白1X1
f[1][3] = 1;//? 拼滿2X1
for (int i = 2; i <= n ; i ++ )
{
f[i][0] = f[i - 1][3];
//? f[i - 1][0]+ upside down L? ?或者 f[i - 1][2]中插入 horizontal I
f[i][1] = (f[i - 1][2] + f[i - 1][0]) % mod;
f[i][2] = (f[i - 1][1] + f[i - 1][0]) % mod; //? f[i - 1][0]+? L? ?或者 f[i - 1][1]中插入 horizontal I
// f[i - 1][0] + horizontal 2X I, f[i - 1][3] +? I,? f[i - 1][1]+ L
f[i][3] = ((f[i - 1][0] + f[i - 1][1]) % mod + (f[i - 1][2] + f[i - 1][3]) % mod) % mod;
}
/*
for (int i = 1; i <= n ; i ++ ){
printf("%d,", f[i ][0]);
printf("%d,", f[i ][1]);
printf("%d,", f[i ][2]);
printf("%d\n", f[i ][3]);
}*/
printf("%d\n", f[n ][3]);
return 0;
}