题目意思就是6*6数组中的每一个hourglass的和算出来,找到最大值就行;
hourglass 如下,和为19 。
2 4 4
2
1 2 4
tips:需要注意hourglass和为负数的情况。所以最大值的初始值不能设置为0。Integer.MIN_VALUE
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Arrays2D {
// Complete the hourglassSum function below.
static int hourglassSum(int[][] arr) {
int result = Integer.MIN_VALUE;//之前我把result初始值定为0. 如果所有sum都是负数,那么sum<result一直成立,result一直都是0.
for (int i = 0; i <= 3; i++) {
for (int j = 0; j <= 3; j++) {
int sum = sum(i,j,arr);
if (sum > result) {
result = sum;
}
}
}
System.out.println(result);
return result;
}
private static int sum(int i, int j, int[][] arr) {
int sum1 = arr[i][j] + arr[i][j + 1] + arr[i][j + 2];
int sum2 = arr[i + 1][j+1];
int sum3 = arr[i+2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2];
return sum1 + sum2 + sum3;
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) throws IOException {
int[][] arr = new int[6][6];
Scanner in = new Scanner(System.in);
for(int arr_i=0; arr_i < 6; arr_i++){
for(int arr_j=0; arr_j < 6; arr_j++){
arr[arr_i][arr_j] = in.nextInt();
}
}
int result = hourglassSum(arr);
scanner.close();
}
}