标签:
3
00111
01011
10001
11010
11100
11101
11101
11110
11111
11111
01111
11111
11111
11111
11111
3
2
-1
#include<cstring> #include<cstdlib> #include<cstdio> #include<iostream> using namespace std; typedef int array[6]; array a,b[6],c[6]; int n,ans; void Init() { char str[6]; for (int i=1;i<=5;i++) { scanf("%s",str); for (int j=1;j<=5;j++) b[i][j]=str[j-1]-‘0‘; } } int work() { int dep=0; for (int i=1;i<=5;i++) if (a[i]==1) { dep++; c[1][i]^=1; c[2][i]^=1; if (i>1) c[1][i-1]^=1; if (i<5) c[1][i+1]^=1; } for (int i=2;i<=5;i++) for (int j=1;j<=5;j++) if (c[i-1][j]==0 && dep<=6) { dep++; c[i][j]^=1; c[i-1][j]^=1; if (j>1) c[i][j-1]^=1; if (j<5) c[i][j+1]^=1; if (i<5) c[i+1][j]^=1; } if (dep>=7) return 7; for (int i=1;i<=5;i++) if (c[5][i]==0) return 7; return dep; } void solve() { Init(); ans=0xFFFFFFF; for (int a1=0;a1<=1;a1++) for (int a2=0;a2<=1;a2++) for (int a3=0;a3<=1;a3++) for (int a4=0;a4<=1;a4++) for (int a5=0;a5<=1;a5++) { memcpy(c,b,sizeof(c)); a[1]=a1; a[2]=a2; a[3]=a3; a[4]=a4; a[5]=a5; int step=work(); if (step<ans) ans=step; if (ans==2) { printf("2\n"); return ; } } if (ans<=6) printf("%d\n",ans); else printf("-1\n"); } int main() { scanf("%d",&n); for (int test=1;test<=n;test++) solve(); return 0; }
标签:
原文地址:http://www.cnblogs.com/hyfer/p/5812575.html