有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
##
如果最后一个格子可以和第一个相同,则很简单n个格子的染法为3*2^(n-1)种
那最后一个格子必须想通只需3*2^(n-1)减去最后一个格子与第一个格子相同的染法种数,而当第一个格子与最后一个格子相同时,恰好为此题n-1个格子时的染法种数。
可得出递推r(n) = 3*2^(n - 1) - r(n - 1) 从第三项开始符合递推。
、、、、、、、
或者找规律吧。
#include<stdio.h>
int main()
{
int i,n;
long long a[55]={3,6,6};
for (i=3;i<55;i++)
a[i]=a[i-1]+2*a[i-2];
while (scanf ("%d",&n)!=EOF)
{
printf ("%lld\n",a[n-1]);
}
return 0;
}