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