📄 3007404_tle.cc
字号:
#include <stdio.h>
int press[17];
int ans, finish;
char str[5][5];
int valid(int x,int y)
{
if(x < 0 || y < 0 || x > 3 || y > 3)
return 0;
return 1;
}
void flip(int num)
{
int i, j;
int x, y;
char map[4][5];
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
map[i][j] = str[i][j];
}
map[i][j] = '\0';
}
for(i = 0; i < 16; i++)
{
if(!press[i])
{
continue;
}
x = i/4;
y = i%4;
for(j = 0; j < 4; j++)
{
if(map[x][j]=='+')
map[x][j] = '-';
else
map[x][j] = '+';
}
for(j = 0; j < 4; j++)
{
if(j==x)
continue;
if(map[j][y]=='+')
map[j][y] = '-';
else
map[j][y] = '+';
}
}
for(i = 0; i < 4; i++)
{
for(j = 0; j < 4; j++)
{
if(map[i][j]=='+')
return ;
}
}
finish = 1;
printf("%d\n",num);
for(i = 0; i < 16; i++)
{
if(press[i])
{
printf("%d %d\n",i/4+1,i%4+1);
}
}
}
void enumerate(int p,int num)
{
int i;
if(finish)
{
return ;
}
if(p == 16)
{
flip(num);
return ;
}
for(i = 0; i < 2 && !finish; i++)
{
press[p] = i;
enumerate(p+1,num+i);
}
}
int main()
{
int i;
for(i = 0; i < 4; i++)
{
scanf("%s",str[i]);
}
finish = 0;
enumerate(0,0);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -