链接:http://acm.hdu.edu.cn/showproblem.php?pid=2045
明显的递推题,在涂第n个方格时,如果第n-1个方格颜色和第一个方格颜色相同,那么第n个方格有两种颜色可以涂。
如果第n-1个方格颜色和第一个方格颜色不同,那么第n个方格只有一种颜色可以涂
那么f(n)=f(n-1)+f(n-2)*2
f(n-2)怎么来的呢?当第n-1个方格颜色和第一个方格颜色相同时,可以得知涂第n-1个格子时是没有选择的,只能涂一种。
此时f(n)也就取决于f(n-2)啦
代码::
#include <stdlib.h>
long long int sum[55];
int n,i;
void init()
{
sum[1]=3;
sum[2]=6;
sum[3]=6;
for(i=4;i<=50;i++)
{
sum[i]=sum[i-1]+sum[i-2]*2;
}
}
int main()
{
init();
while(scanf("%d",&n)!=EOF)
{
printf("%lld\n",sum[n]);
}
return 0;
}