微軟演算法100題35 求乙個矩陣中最大的二維矩陣

2022-04-03 10:06:31 字數 1047 閱讀 5742

35.

求乙個矩陣中最大的二維矩陣(元素和最大).如:

1 2 0 3 4

2 3 4 5 1

1 1 5 3 0

中最大的是:

4 55 3

思路: 可以用乙個2x2的二維矩陣從第一行開始依次遍歷直到找到和是最大的那個子矩陣,但暴力破解一般都不是最優答案。 我的想法是如果用2x2矩陣逐行遍歷的話,其實每次計算2x2矩陣的和的時候,其中的第一行其實在上次計算中已經算過了,如果計算的時候可以使用上次的結果,無疑可以改善效能,降低複雜度,所以應該將2x2矩陣的第一列快取到變數裡,每次移動視窗時,更新該變數

1

package

com.rui.microsoft;23

public

class

test35_maxsubmatrix ,,};

7int res = find(a, 3, 5);

8for(int i = 0; i < res.length; i++)

12 system.out.println("");13}

14}1516

public

static

int find(int matrix, int rows, int

cols)35}

36}3738 system.out.println("max_i: " +max_i);

39 system.out.println("max_j: " +max_j);

4041 res[0][0] = matrix[max_i][max_j-1];

42 res[0][1] =matrix[max_i][max_j];

43 res[1][0] = matrix[max_i+1][max_j - 1];

44 res[1][1] = matrix[max_i+1][max_j];

4546

return

res;47}

48 }

35 求乙個矩陣中最大的二維矩陣

求1個矩陣中最大的二維矩陣 1。單就這一題來說,首先方法就是遍歷 include using namespace std int a 5 int m 3 int n 5 void max matrix void cout 矩陣是 1 1 s 1 s 1 int main void 還有1種情況,給定...

微軟面試100題演算法(1)實現乙個字元匹配

問題 實現乙個挺高階的字元匹配演算法 給一串很長字串,要求找到符合要求的字串,例如目的串 123 1 3 2 12 3這些都要找出來 其實就是類似一些和諧系統。分析 這題的真正意思就是,給你乙個目標串,如 123 只要乙個字串裡面同時包含1 2和3,那麼這個字串就匹配了。系統越和諧,說明錯殺的可能行...

實現乙個佇列 微軟面試100題 第三十四題

題目要求 實現乙個佇列。佇列的應用場景是 乙個生產者執行緒將int型的數入列,乙個消費者執行緒將int型的數出列。參考資料 程式設計之美1.10 題目分析 可以按照作業系統中的生產者與消費者模型來實現 大致思路如下 void producer void void consumer void 實現 思...