有排成一行的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;
}