第一行的情况的枚举,为什么没有用?
#include<bits/stdc++.h>
using namespace std;
bool a[7][7];int n,b[6]={0};
void p(int x){
int o=0;
while(x>0){
b[o]=a%2;
x/=2;
o++;
}
}
void dj(int y,int z){
a[y][z]=(a[y][z]+1)%2;
a[y+1][z]=(a[y+1][z]+1)%2;
a[y][z+1]=(a[y][z+1]+1)%2;
a[y-1][z]=(a[y-1][z]+1)%2;
a[y][z-1]=(a[y][z-1]+1)%2;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int m=1;
for(int j=1;j<=5;j++){
for(int k=1;k<=5;k++){
cin>>a[j][k];
}
}
for(int j=0;j<=31;j++){
int ans=0,t=0;
for(int k=0;k<=5;k++){
b[k]=0;
}
p(j);
for(int k=0;k<=4;k++){
if(b[k]==1){
ans++;
dj(1,k+1);}
}
for(int k=1;k<=4;k++){
for(int l=1;l<=5;l++){
if(a[k][l]==0){
ans++;
dj(k+1,l);}
}
}
for(int k=1;k<=5;k++){
if(a[5][k]==0)
t++;
}
if(t<=0&&ans<=6){
m++;
cout<<ans<<endl;}
}
if(m<=1)
cout<<-1<<endl;
}
}