您的位置:首页 > 其它

求矩阵中元素和最大的二维子矩阵

2014-05-13 17:55 239 查看
求一个矩阵中最大的二维矩阵(元素和最大).如:

1 2 0 3 4

2 3 4 5 1

1 1 5 3 0

中最大的二维矩阵是:

4 5

5 3

分析:

本题要求的是元素和最大的二维子矩阵,因为指定了所求矩阵的维数,所以简化了问题。思路是简单的,即按行遍历,每次计算当前行及下一行的四个元素的和,然后与当前记录的子矩阵的和做比较,如果大于当前值,则用其替代原先保存的值,并记录当前子矩阵的左上角元素位置。这样下来,时间复杂度为O(m*n)。

参考代码:
1: int GetMaxMatrix(int** matrix, int& row, int& col)
2: {
3:     int rowNum,colNum;
4:
5:     int sum=-(1<<31), temp = 0;
6:
7:     for (int i = 0; i < row - 1; i++)
8:     {
9:         for (int j = 0; j < col - 1; j++)
10:         {
11:             temp += (matrix[i][j] + matrix[i][j+1]);
12:             temp += (matrix[i+1][j] + matrix[i+1][j+1]);
13:
14:             if (temp > sum)
15:             {
16:                 sum = temp;
17:                 rowNum = i;
18:                 colNum  = j;
19:             }
20:             temp = 0;
21:         }
22:     }
23:     row=rowNum;
24:     col=colNum;
25:
26:     return sum;
27: }
28:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐