给出最高15*15的0 1矩阵,每次可以翻转一个点,其相邻的4个点都被翻转,问最少翻转几次可以全部变为0
题中要求的字典序根本不用考虑。。。
枚举第一行的翻转所有翻转情况然后逐行向下更新即可,因为第一行确定后,后面的都有唯一解
#include "stdio.h"
#include "string.h"
int n,m;
int vis[21][21],b[21][21],a[21][21],pri[21][21];
void on(int x,int y)
{
b[x][y]^=1;
if (x-1>=0) b[x-1][y]^=1;
if (y-1>=0) b[x][y-1]^=1;
b[x+1][y]^=1;
b[x][y+1]^=1;
}
int main()
{
int ok,ans,sum,cnt,i,j,w,key,flag;
while (scanf("%d%d",&n,&m)!=EOF)
{
for (i=0;i
=ans) break;
for (j=0;j
=ans) break; } } if (sum>=ans || i!=n) continue; flag=1; for (j=0;j
