#include <iostream>
#include <cstring>
using namespace std;
int map[6][8];
int press[6][8];
bool check()
{
for(int i=2;i<=5;i++)
for(int j=1;j<=6;j++)
{
press[i][j]=(map[i-1][j]+press[i-1][j]+press[i-1][j-1]+press[i-1][j+1]+press[i-2][j])%2;
}
for(int j=1;j<=6;j++)
{
int temp=(map[5][j]+press[5][j]+press[4][j]+press[5][j-1]+press[5][j+1])%2;
if(temp) return false;
}
return true;
}
void solve()
{
int i, j;
memset(press,0,sizeof(press));
press[1][1]=-1;
for(i=0;i<64;i++)
{
press[1][1]++;
j=1;
while(press[1][j]==2)
{
press[1][j]=0;
j++;
press[1][j]++;
}
if(check()) break;
}
}
int main()
{
int T;
cin>>T;
for(int t=1;t<=T;t++)
{
memset(map,0,sizeof(map));
for(int i=1;i<=5;i++)
for(int j=1;j<=6;j++)
cin>>map[i][j];
solve();
cout<<"PUZZLE #"<<t<<endl;
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
cout<<press[i][j]<<" ";
cout<<press[i][6]<<endl;
}
}
return 0;
}
POJ 1222 (数组模拟位运算)
最新推荐文章于 2022-10-21 23:14:10 发布