有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.
#include <iostream>
using namespace std;
struct node
{
int color;
};
void mifeng(int a,node b[],int n);
int main(int argc, char *argv[])
{
int a,b,c,i,j,k,sum=0,n;
char s[256];
while(cin>>n)
{
node rgb[n];
rgb[0].color=0;
mifeng(1,rgb,n);
rgb[0].color=1;
mifeng(1,rgb,n);
rgb[0].color=2;
mifeng(1,rgb,n);
}
return 0;
}
void mifeng(int a,node b[],int n)
{
if(n==1)cout<<"完成"<<endl;
else if(a==n)
{
if(b[0].color!=b[n-1].color)cout<<"完成"<<endl;
}
else
{
switch(b[a-1].color)
{
case 0:b[a].color=1;
mifeng(a+1,b,n);
b[a].color=2;
mifeng(a+1,b,n); break;
case 1:b[a].color=0;
mifeng(a+1,b,n);
b[a].color=2;
mifeng(a+1,b,n); break;
case 2:b[a].color=1;
mifeng(a+1,b,n);
b[a].color=0;
mifeng(a+1,b,n);
}
}}