求乙個矩陣中最大的二維矩陣 元素和最大

2021-06-05 03:33:30 字數 1330 閱讀 4718

35.(矩陣)

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

1 2 0 3 4

2 3 4 5 1

1 1 5 3 0

中最大的是:

4 55 3

要求:(1)寫出演算法;(2)分析時間複雜度;(3)用c寫出關鍵**

遍歷每個二維矩陣,記錄和最大的index。時間複雜度o(m*n)

//coder:lee,20120320

#include

#include

using namespace std;

struct index

;//output: left-up index

index max2dinmatrix(int a[5],int row,int col)

}return leftupindex;

}int main()

,,};

index index=max2dinmatrix(a,3,5);

for(int i=index.indexrow;i<=index.indexrow+1;i++)

return 0;

}擴充套件:參考

如果題目是要求求最大的子矩陣呢,那麼我們就可以把矩陣每一豎直方向的排列,看做乙個元素。

所以,矩陣就轉化成了我們熟悉的一維陣列。

即以上矩陣,相當於:

a[1->n][1] a[1->n][2] ... a[1->n][i] .. a[1->n][j] .. a[1->n][n]

1->n 表示豎直方向,其中a[1->n][1]表示第一列中的所有元素相加後的值。

那麼,假定是5x5矩陣,那解法是:

第一行:a[1-5][1]  a[1-5][2]  a[1-5][3] a[1-5][4] a[1-5][5] 形成乙個一維陣列,該陣列的最大和值

為sum1.

第二行:a[2-5][1]  a[2-5][2]  a[2-5][3] a[2-5][4] a[2-5][5] 形成乙個一維陣列,該陣列的最大和值

為sum2.

第三行:a[3-5][1]  a[3-5][2]  a[3-5][3] a[3-5][4] a[3-5][5] 形成乙個一維陣列,該陣列的最大和值

為sum3.

第四行:a[4-5][1]  a[4-5][2]  a[4-5][3] a[4-5][4] a[4-5][5] 形成乙個一維陣列,該陣列的最大和值

為sum4.

第五行:a[5][1]  a[5][2]  a[5][3] a[5][4] a[5][5] 形成乙個一維陣列,該陣列的最大和值為sum5.

然後比較sum1到sum5找出最大值就為該矩陣的最大子矩陣所對應的和值.

求乙個矩陣中最大的二維矩陣 元素和最大

求乙個矩陣中最大的二維矩陣 元素和最大 如 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是 4 55 3 要求 1 寫出演算法 2 分析時間複雜度 3 用c寫出關鍵 public class maxsubmatrix int b int result msm.findsumm...

求乙個矩陣中最大的二維矩陣 元素和最大

一,題目 求乙個矩陣中最大的 二維矩陣 元素和最大 如 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是 4 5 5 3要求 1 寫出演算法 2 分析時間複雜度 3 用c 寫出關鍵 二,分析 假設最大子矩陣的結果為從第r行到 k行 從第i列到 j列的子矩陣,如下所示 ari 表...

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種情況,給定...