您的位置:首页 > 其它

求一个矩阵中最大的二维矩阵(元素和最大)

2013-06-28 11:27 309 查看
/*
copyright@nciaebupt 转载请注明出处
题目:求一个矩阵中最大的二维矩阵(元素和最大).如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码
*/
#include <cstdlib>
#include <iostream>

void max2DSubMatrix(int matrix[][5],int rowlen, int collen, int res[2][2]){
if(matrix == NULL || rowlen < 1 || collen < 1) return;
int sum = 0;
for(int i = 1; i < rowlen; ++i){
for(int j = 1; j < collen; ++j){
int tmp = matrix[i-1][j-1] + matrix[i-1][j] + matrix[i][j-1] + matrix[i][j];
if(tmp > sum){
sum = tmp;
res[0][0] = matrix[i-1][j-1];
res[0][1] = matrix[i-1][j];
res[1][0] = matrix[i][j-1];
res[1][1] = matrix[i][j];
}
}
}
return;
}

int main(int argc, char ** argv){
int matrix[][5] = {{1,2,0,3,4},{2,3,4,5,1},{1,1,5,3,0}};
int rowlen = sizeof(matrix)/sizeof(matrix[0]);
int collen = sizeof(matrix)/(rowlen * sizeof(int));

int res[2][2];

max2DSubMatrix(matrix, rowlen, collen, res);

for(int i = 0; i < 2; ++i){
for(int j = 0; j < 2; ++j){
std::cout<<res[i][j]<<" ";
}
std::cout<<std::endl;
}

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐