# 矩形区域不超过 K 的最大数值和

给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。

题目数据保证总会存在一个数值和不超过 k 的矩形区域。

 

示例 1:

输入:matrix = [[1,0,1],[0,-2,3]], k = 2
输出:2
解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。

示例 2:

输入:matrix = [[2,2,-1]], k = 3
输出:3

 

提示:

 

进阶:如果行数远大于列数,该如何设计解决方案?

## template ```java class Solution { public int maxSumSubmatrix(int[][] matrix, int k) { int row = matrix.length; if (row <= 0) return 0; int line = matrix[0].length; int max = Integer.MIN_VALUE; for (int left = 0; left < line; left++) { int[] rowSum = new int[row]; for (int right = left; right < line; right++) { for (int i = 0; i < row; i++) { rowSum[i] += matrix[i][right]; } max = Math.max(max, dpmax(rowSum, k)); } } return max; } private int dpmax(int[] arr, int k) { int max = Integer.MIN_VALUE; int n = arr.length; for (int top = 0; top < n; top++) { int sum = 0; for (int bottom = top; bottom < n; bottom++) { sum += arr[bottom]; if (sum > max && sum <= k) max = sum; } } return max; } } ``` ## 答案 ```java ``` ## 选项 ### A ```java ``` ### B ```java ``` ### C ```java ```