您的位置:首页 > 其它

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

2018-06-25 17:28 811 查看
//没有什么好想法,就用暴力遍历AC了
class Solution { public: int maxSumSubmatrix(vector<vector<int>>& mat, int k) { int row = mat.size(); if(row ==0) return 0; int col = mat[0].size(); if(col==0) return 0; vector<vector<int>> dp(row + 1, vector<int>(col + 1, 0)); //先将这个矩形的sum数据给求解出来。 //dp[i][j]表示的是以i,j为右下角矩形的和,一切都是一句左上角为参考对象 for(int i=1; i<=row; ++i) { for(int j=1; j<=col; ++j) { dp[i][j] = mat[i-1][j-1] + dp[i-1][j] + dp[i][j-1] -dp[i-1][j-1]; } } int ret = INT_MIN; for(int i=1; i<=row; ++i) { for(int j=1; j<=col; ++j) { for(int ii=0; ii<i; ++ii) { for(int jj=0; jj<j; ++jj) { int tmp = dp[i][j] - dp[ii][j] - dp[i][jj] + dp[ii][jj]; if(tmp <= k) ret = max(ret, tmp); } } } } return ret; } };

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: