问题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
分析:就是高中的排列组合问题...写了写数学方法好像是错的...毕竟数学渣...在纸上画出来了树状图看的...然后发现从第四项开始都和前面两项有关系
然后就把前三项写出来进行递推...
注意:开数组时用int范围小了...用的long long...
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int num;
while(scanf("%d",&num)!=EOF){
long long a[105]={0,3,6,6};
for(int i=4;i<=num;i++){
a[i]=a[i-1]+2*a[i-2];
}
cout<<a[num]<<endl;
}
return 0;
}