#include<iostream>
using namespace std;
int num=0x3f3f3f3f;
int a[10][10],b[10][10],flag;
int fanzhuan(int x,int y)
{
a[x][y]=!a[x][y];
for(int i=0;i<4;i++)
a[x][i]=!a[x][i];
for(int j=0;j<4;j++)
a[j][y]=!a[j][y];
}
int panduan()
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(!a[i][j])
return 0;
return 1;
}
struct node
{
int a,b;
}p[20];
void dfs(int x,int y,int ans)
{
if(num==ans)
{
flag=panduan();
return;
}
if(flag||x>=4||y>=4)
return;
int fy=(y+1)%4;
int fx=x+(y+1)/4;
fanzhuan(x,y);
dfs(fx,fy,ans+1);
p[ans].x=x;
p[ans].y=y;
fanzhuan(x,y);
dfs(fx,fy,ans);
}
int main()
{
string s[4];
while(cin>>s[0])
{
for(int i=1;i<4;i++)
cin>>s[i];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(s[i][j]=='+')
a[i][j]=0;
else a[i][j]=1;
flag=0;
for(int i=0;i<=16;i++)
{
num=i;
dfs(0,0,0);
if(flag)break;
}
cout<<num<<endl;
for(int i=0;i<num;i++)
cout<<p[i].a+1<<" "<<p[i].b+1<<endl;
}
}
The Pilots Brothers' refrigerator dfs+枚举
最新推荐文章于 2020-10-19 13:40:21 发布