1 #include<bits/stdc++.h>
2 using namespace std;
3 const int INF=0x3f3f3f3f;
4 int f[6][6],a[6][6],n;
5 int dx[]={0,-1,0,0,1};
6 int dy[]={0,0,-1,1,0};
7 inline void go(int x,int y)
8 {
9 for(int i=0;i<=4;i++)
10 {
11 int xx=x+dx[i];
12 int yy=y+dy[i];
13 if(xx<0||xx>4||yy<0||yy>4) continue;
14 a[xx][yy]^=1;
15 }
16 }
17 int main()
18 {
19 scanf("%d",&n);
20 while(n--)
21 {
22 for(int i=0;i<5;i++)
23 for(int j=0;j<5;j++)
24 scanf("%1d",&f[i][j]);
25 int ans=INF;
26 for(int i=0;i<32;i++)
27 {
28 int cnt=0;bool flag=0;
29 memcpy(a,f,sizeof(f));
30 for(int j=0;j<5;j++) if((i>>j)&1) cnt++,go(0,j);//枚举第一行点击方法
31 for(int j=0;j<4;j++)
32 for(int k=0;k<5;k++)
33 if(!a[j][k]) cnt++,go(j+1,k);
34 for(int j=0;j<5;j++)
35 for(int k=0;k<5;k++)
36 if(!a[j][k]) {flag=1;break;}
37 if(!flag) ans=min(ans,cnt);
38 }
39 if(ans==INF||ans>6) printf("%d\n",-1);
40 else printf("%d\n",ans);
41 }
42 return 0;
43 }
来源:oschina
链接:https://my.oschina.net/u/4417994/blog/3703261