我用java按照答案思路写的怎么答案错了??找了半天没找出来QWQ
错误的代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main{
static char[][] g=new char[10][10];
static int n,u=0;
static int[][] d= {{0,0},{0,1},{1,0},{0,-1},{-1,0}};
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
n=in.nextInt();
for(int q=1;q<=n;q++) {
for(int i=0;i<5;i++)
g[i]=in.next().toCharArray();
System.out.println(work());
}
}
static public int work() {
int num=100000;
for(int k=0;k<1<<5;k++) {
int ans=0;
char[][] backup=new char[10][10];
for(int i=0;i<5;i++)
backup[i]=Arrays.copyOf(g[i],g[i].length);
for(int j=0;j<5;j++) {
if((k>>j & 1)==1) {
ans++;
turn(0,j);
}
}
for(int i=0;i<4;i++) {
for(int j=0;j<5;j++) {
if(g[i][j]=='0') {
ans++;
turn(i+1,j);
}
}
}
boolean flag=true;
for(int j=0;j<5;j++) {
if(g[4][j]=='0') {
flag=false;
break;
}
}
if(flag) num=Math.min(num,ans);
for(int i=0;i<5;i++)
g[i]=Arrays.copyOf(backup[i],backup[i].length);
}
if(num>6) return -1;
return num;
}
static public void turn(int x,int y) {
for(int i=0;i<5;i++) {
int m=x+d[i][0],n=y+d[i][1];
if(m>=0 && m<5 && n>=0 && n<5) {
g[x][y]^=1;
}
}
}
}
求大佬帮我解决下。
费解的开关java
提问于2020-01-18 03:16
1767