思路:
当计算第n个时,对于前n-1个,如果是首尾不同的话,则第n个唯一确定,累计a[n-1]种方法
若前n-1个是首尾相同的,则第n个有2种选择,累计2*a[n-2]种方法
代码:
#include <stdio.h>
int main()
{
int n;
__int64 a[51]={0,3,6,6};
for(n=4;n<51;n++)
a[n]=a[n-1]+2*a[n-2];
while (~scanf("%d",&n))
printf("%I64d\n",a[n]);
return 0;
}