这道题只要找出递推关系式就很容易了。
设n个格子有f(n)种,分俩种情况:
(1)第一个格子与第n-1个格子不同色,则第n个格子只有一种涂法,f(n)=f(n-1)*1 ;
(2)第一个格子与第n-1个格子同色,即第n-1个格子只有一种涂法,则第n个格子有2中涂法,f(n)=2*1*f(n-2) ;
#include<iostream>
using namespace std;
int main(){
int n,i;
__int64 f[51];//要用__int64
while(scanf("%d",&n)!=EOF){
f[1]=3; f[2]=6;f[3]=6;
for(i=4;i<=n;i++)
f[i]=f[i-1]+2*f[i-2];
printf("%I64d\n",f[n]);
}
return 0;
}