From 9d6bc8ef30b7677ec23a39f397ebd414f434e5e2 Mon Sep 17 00:00:00 2001 From: Chen Xu Date: Wed, 7 Sep 2022 03:41:08 -0400 Subject: [PATCH] Day 22 - DP III --- DPIII.java | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/DPIII.java b/DPIII.java index 641dbeb..379b84e 100644 --- a/DPIII.java +++ b/DPIII.java @@ -261,6 +261,28 @@ public int largest2(int[][] matrix) { * sum. Return the sum of the submatrix. */ public int largest3(int[][] matrix) { - return 0; + int H = matrix.length; + int W = matrix[0].length; + + int[][] dp = new int[H + 1][W]; + + for (int i = 0; i < H; i++) { + for (int j = 0; j < W; j++) { + dp[i + 1][j] = dp[i][j] + matrix[i][j]; + } + } + + int max = Integer.MIN_VALUE; + for (int i = 0; i < H; i++) { + for (int j = i + 1; j < H + 1; j++) { + int cur = 0; + for (int k = 0; k < W; k++) { + cur += dp[j][k] - dp[i][k]; + max = Math.max(cur, max); + cur = Math.max(0, cur); + } + } + } + return max; } }