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

//没有什么好想法,就用暴力遍历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; } };

猜你喜欢

转载自www.cnblogs.com/randyniu/p/9225332.html
今日推荐