Чтобы найти максимально возможную сумму элементов внутри прямоугольника данной матрицы: Пожалуйста, помогите мне с кодом, так как этот код успешно работает для большинства тестовых случаев, но не работает в частных тестовых случаях. Помогите мне с ошибкой Я сделал с этим кодом.
import java.util.*;
class Hello{
static int preProcess(int mat[][], int aux[][],int M,int N){
for (int i = 0; i < M; i++)
aux[0][i] = mat[0][i];
for (int i = 1; i < M; i++)
for (int j = 0; j < N; j++)
aux[i][j] = mat[i][j] +
aux[i-1][j];
for (int i = 0; i < M; i++)
for (int j = 1; j < N; j++)
aux[i][j] += aux[i][j-1];
return 0;
}
static int sumQuery(int aux[][], int tli,
int tlj, int rbi, int rbj){
int res = aux[rbi][rbj];
if (tli > 0)
res = res - aux[tli-1][rbj];
if (tlj > 0)
res = res - aux[rbi][tlj-1];
if (tli > 0 && tlj > 0)
res = res + aux[tli-1][tlj-1];
return res;
}
public static void main (String[] args){
Scanner s = new Scanner(System.in);
int m = s.nextInt();
int n = s.nextInt();
int[][]mat = new int[m][n];
for(int i =0;i<m;i++){
for(int j=0;j<n;j++){
mat[i][j] = s.nextInt();
}
}
int aux[][] = new int[m][n];
preProcess(mat, aux,m,n);
int tli = 1, tlj = 0, rbi = 2, rbj = 2;
System.out.print(sumQuery(aux, tli, tlj, rbi, rbj));
}
}
Пример тестового примера: (который фактически прошел для этого кода)
// Размер ввода 2D Matrix Array
3 3
// Элементы матрицы
1 2 3 4 5 6 7 8 9
// Стороны прямоугольник
1 0 2 2
Пример вывода: 39