📄 1222.cpp
字号:
#include <stdio.h>
#include <memory.h>
int grid[6][7];
int op[6][7];
int a[6][7];
int out[6][7];
void next()
{
int j;
for(j=5;j>=0;j--)
{
if(j==5) op[0][j]++;
else
if(op[0][j+1]==2) {op[0][j+1]=0;op[0][j]++;}
}
}
void copy(int cp)
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<6;j++)
{
if(cp==0) a[i][j]=grid[i][j];
else out[i][j]=op[i][j];
}
}
void change(int i,int j)
{
a[i][j]^=1;
if(j>0) a[i][j-1]^=1;
if(j<5) a[i][j+1]^=1;
if(i>0) a[i-1][j]^=1;
if(i<4) a[i+1][j]^=1;
}
int main()
{
int t,p,i,j,flag;
scanf("%d",&t);
for(p=1;p<=t;p++)
{
for(i=0;i<5;i++)
for(j=0;j<6;j++)
scanf("%d",&grid[i][j]);
memset(op,0,sizeof(op));
while(op[0][0]!=2)
{
copy(0);
flag=0;
for(i=0;i<=5;i++)
{
if(i!=0&&i!=5)
{
for(j=0;j<6;j++)
{
if(a[i-1][j]==1)
{
op[i][j]=1;
change(i,j);
}
else op[i][j]=0;
}
}
else
{
if(i==0)
{
for(j=0;j<6;j++)
{
if(op[i][j]==1) change(i,j);
}
}
else if(i==5)
{
for(j=0;j<6&&a[i-1][j]==0;j++);
if(j==6) {flag=1; copy(1);}
}
}
}
if(flag==1) break;
else next();
}
printf("PUZZLE #%d\n",p);
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
if(j) printf(" %d",out[i][j]);
else printf("%d",out[i][j]);
}
printf("\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -