题目
计算可行方案,一共给n段路,每3段颜色不能都不一样,计算最后有几种可行方案
典型递归,下一次一段路的颜色加上是否可行肯定与前面状态最后两端路颜色有关
总结:主要看后面两块,假设第n-2块有a种方法,n-1有b种方法。若第n-2和第n-1颜色一样,则a=b(要想清楚如果颜色一样,这两种状态的可行方案就一样了),第n块有3*a种方法。因n-1总共有b种方法,不一样的情况就是总的减去一样的,即b-a,所以第n块有2*(b-a)种方法。
#include<iostream>
using namespace std;
int a(int x);
int main()
{
int t;
cin>>t;
while(t--)
{
int x;
cin>>x;
cout<<a(x)<<endl;
}
}
int a(int x)
{
if(x==1)
return 3;
else if(x==2)
return 9;
else
return 2*a(x-1)+a(x-2);
}