求矩阵中元素和最大的二维子矩阵
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 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:
相关文章推荐
- 求一个矩阵中最大的二维矩阵(元素和最大)
- 【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)
- 求一个矩阵中最大的二维矩阵(元素和最大)
- 【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)
- poj 1050 求矩阵的子矩阵的元素和最大
- 求二维矩阵最大子矩阵和
- 程序员面试金典——解题总结: 9.18高难度题 18.12给定一个正整数和负整数组成的N*M矩阵,编写代码找出元素总和最大的子矩阵。
- 【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)
- 求一个矩阵中最大的矩阵(元素和最大)(二维情况)
- 求二维矩阵和最大的子矩阵
- 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。
- 【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)
- 求二维矩阵和最大的子矩阵
- 每天学习一算法系列(32)(求一个矩阵中最大的二维矩阵(元素和最大))
- 35 求一个矩阵中最大的二维矩阵(元素和最大)
- 求一个矩阵中最大的二维矩阵(元素和最大)
- 求m*n矩阵中最大的子矩阵(元素和最大)
- 一个矩阵中最大的二维矩阵(元素和最大)
- 一个H行L列的二维矩阵数组(整形),求每行的元素总和,并输出最大的那一行的总和
- 给定一个正整数和负整数组成的N*N矩阵,编写代码找出元素总和最大的子矩阵。