题目要求
分析
这题高性能,所以不能用Scanner,否则会TLE,得用BufferedReader。
扫描地图,遇到0(有容身之地)的时候,扫一下同一行、同一列的数值,求个和。
最后得到总和。
AC代码(Java语言描述)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static int[][] graph;
private static int num;
private static int count(int x_position, int y_position) {
int counter = 0;
for (int i = 0; i < num; i++) {
counter += graph[i][y_position];
counter += graph[x_position][i];
}
return counter;
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
num = Integer.parseInt(reader.readLine());
graph = new int[num][num];
int[] blank_x_array = new int[10000];
int[] blank_y_array = new int[10000];
int counter = 0;
for (int i = 0; i < num; i++) {
String[] tempArr = reader.readLine().split(" ");
for (int j = 0; j < num; j++) {
int temp = Integer.parseInt(tempArr[j]);
if (temp == 0) {
blank_x_array[counter] = i;
blank_y_array[counter] = j;
counter++;
}
graph[i][j] = temp;
}
}
reader.close();
if (counter == 0) {
System.out.println("Bad Game!");
} else {
int max = 0;
for (int i = 0; i < counter; i++) {
int temp = count(blank_x_array[i], blank_y_array[i]);
if (temp > max) {
max = temp;
}
}
System.out.println(max);
}
}
}