voidturn(int x, int y) { for (int i = 0; i < 5; i ++ ) { int a = x + dx[i], b = y + dy[i]; if (a < 0 || a >= 5 || b < 0 || b >= 5) continue; // 在边界外,直接忽略即可 g[a][b] ^= 1; } }
intmain() { int T; cin >> T; while (T -- ) { for (int i = 0; i < 5; i ++ ) cin >> g[i];
int res = 10; for (int op = 0; op < 32; op ++ ) { memcpy(backup, g, sizeof g); intstep = 0; for (int i = 0; i < 5; i ++ ) if (op >> i & 1) { step ++ ; turn(0, i); }
for (int i = 0; i < 4; i ++ ) for (int j = 0; j < 5; j ++ ) if (g[i][j] == '0') { step ++ ; turn(i + 1, j); }
bool dark = false; for (int i = 0; i < 5; i ++ ) if (g[4][i] == '0') { dark = true; break; }
if (!dark) res = min(res, step); memcpy(g, backup, sizeof g); }