#include<cstring>
#include<cstdio>
#include<string>
#include<stack>
#include<map>
#include<list>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
char s[4][4];
int sn[4][4];
int flag;
int deep;
struct path{
int x,y;
}p[16];
int jude(){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(!sn[i][j])
return 0;
}
}
return 1;
}
void change(int row,int col){
sn[row][col]=!sn[row][col];
for(int i=0;i<4;i++){
sn[row][i]=!sn[row][i];
sn[i][col]=!sn[i][col];
}
return;
}
void bfs(int row,int col,int cnt){
if(deep==cnt){
flag=jude();
return;
}
if(flag||row==4)
return;
change(row,col);
if(col<3)
bfs(row,col+1,cnt+1);
else
bfs(row+1,0,cnt+1);
p[cnt].x=row;
p[cnt].y=col;
change(row,col);
if(col<3)
bfs(row,col+1,cnt);
else
bfs(row+1,0,cnt);
}
int main(){
for(int i=0;i<4;i++)
scanf("%s",s[i]);
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(s[i][j]=='-')
sn[i][j]=1;
else
sn[i][j]=0;
}
}
flag=0;
for(deep=0;deep<=16;deep++){
bfs(0,0,0);
if(flag){
break;
}
}
printf("%d\n",deep);
for(int i=0;i<deep;i++){
printf("%d %d\n",p[i].x+1,p[i].y+1);
}
return 0;
}
The Pilots Brothers' refrigerator POJ - 2965
最新推荐文章于 2020-01-17 14:53:09 发布