您的位置:首页 > 其它

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

2016-05-17 18:27 393 查看
#include <stdio.h>
#include <stdlib.h>

int max_matrix(int a[][5], int n)
{
int i = 0, j = 0, k = 0;
int max_sum = 0;
int *b = (int *)malloc(sizeof(int) * n);

for(i = 0; i < n; i++) {
for(j = 0; j < n; j++)
b[j] = 0;

for(j = i; j < 3; j++) {
for(k = 0; k < n; k++)
b[k] += a[j][k];

int sum = maxSubArraySum(b, n);
if(sum > max_sum)
max_sum = sum;
}
}
free(b);
b = NULL;
return max_sum;
}

int maxSubArraySum(int* a, int n)
{
int sum = 0;
int tmp = 0;
int i = 0;

for(i = 0; i < n; i++) {
if(tmp < 0)
tmp = a[i];
else
tmp += a[i];
if(sum < tmp)
sum = tmp;
}
return sum;
}

int main(void)
{
int a[3][5] = {
{ -1, -2, 0, -3, -4},
{ -2, -3, 4, 5, -1},
{ -1, -1, 5, 3, 0}
};
int nResult = max_matrix(a, 5);
printf("nResult = %d\n", nResult);
return 0;

/*
打印
nResult = 17
网上给的说明不对,如果没有负号,最大值应该为35,即整个二位结构
*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: