1. 程式人生 > >Leetcode 363. 矩形區域不超過 K 的最大數值和

Leetcode 363. 矩形區域不超過 K 的最大數值和

一切都 msu leet 求解 數值 code In 右下角 span

//沒有什麽好想法,就用暴力遍歷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; } };

Leetcode 363. 矩形區域不超過 K 的最大數值和