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

代码实现
class Solution {
public:
int maxSumSubmatrix(vector<vector<int>>& matrix, int k) {
int m = matrix.size();
int n = matrix[0].size();
int dp[101][101];
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] +
matrix[i - 1][j - 1];
}
}
int ans = INT_MIN;
int i, j ,i1, j1, tmp;
for (i = 1; i <= m; i++) {
for (j = 1; j <= n; j++) {
for (i1 = i; i1 <= m; i1++) {
for (j1= j; j1 <= n; j1++) {
tmp = dp[i1][j1] - dp[i - 1][j1] - dp[i1][j - 1]
+ dp[i - 1][j - 1];
if (tmp <= k) ans = max(ans, tmp);
}
}
}
}
return ans;
}
};