#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char mapp[5][5];
int book[5][5];
int mm=0;
int answer=17;
void fan(int x,int y)
{
book[x][y]=!book[x][y];
if(x+1<=4)
book[x+1][y]=!book[x+1][y];
if(y+1<=4)
book[x][y+1]=!book[x][y+1];
if(x-1>=1)
book[x-1][y]=!book[x-1][y];
if(y-1>=1)
book[x][y-1]=!book[x][y-1];
}
int panduan()
{
int tmp=book[1][1];
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
if(book[i][j]!=tmp)
{
return 0;
}
}
}
return 1;
}
void dfs(int x,int y,int step)
{
//printf("%d %d\n",x,y);
if(step==mm)
{
if(panduan())
{
answer=mm;
}
return;
}
if(x>4||answer!=17)
{
return ;
}
fan(x,y);
if(y+1<=4)
dfs(x,y+1,step+1);
else
dfs(x+1,1,step+1);
fan(x,y);
if(y+1<=4)
dfs(x,y+1,step);
else
dfs(x+1,1,step);
}
int main ()
{
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
scanf(" %c",&mapp[i][j]);
if(mapp[i][j]=='b')
{
book[i][j]=1;
}
else
{
book[i][j]=0;
}
}
}
for(mm=0;mm<=16;mm++)
{
dfs(1,1,0);
if(answer!=17)
{
break;
}
}
if(answer!=17)
{
printf("%d\n",answer);
}
else
{
printf("Impossible\n");
}
}
poj 1753
最新推荐文章于 2018-07-28 22:23:01 发布