Rect angular Сумма 2D Matrix - Java - PullRequest
0 голосов
/ 22 марта 2020

Чтобы найти максимально возможную сумму элементов внутри прямоугольника данной матрицы: Пожалуйста, помогите мне с кодом, так как этот код успешно работает для большинства тестовых случаев, но не работает в частных тестовых случаях. Помогите мне с ошибкой Я сделал с этим кодом.

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

...