码迷,mamicode.com
首页 > 编程语言 > 详细

返回一个二维整数数组中最大子数组的和

时间:2018-10-21 21:47:04      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:else   ++   返回   需要   时间复杂度   for   std   main   图片   

 题目:返回一个二维整数数组中最大子数组的和。

 要求:

输入一个二维整形数组,数组里有正数也有负数。

 二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和。

求所有子数组的和的最大值。要求时间复杂度为O(n)。

 结对编程要求:

 两人结对完成编程任务。

 一人主要负责程序分析,代码编程。

 一人负责代码复审和代码测试计划。

代码:

#include<stdio.h>
#define INF 1000
#define N 4
#define M 4
int maxsubsum(int * arr, int Size)
{
    int maxSum = -INF;
    int sum = 0;
    int i;
    for( i = 0; i < Size; i++)
    {
        if(sum < 0)
        {
            sum = arr[i];
        }
        else
        {
            sum += arr[i];
        }
        if(sum > maxSum)
        {
            maxSum = sum;
        }
    }
    return maxSum;
}
int maxSubMatrix(int n, int m, int array1[M][N])
 {
     int i, j, h, max1, sum = -INF;
     int b[100];
     for (i = 0; i<n; i++)
    {
        for ( j = 0; j < 100; j++)
        {
                    b[j] = 0;
        }
        for (j = i; j<n; j++)          //把第i行到第j行相加,对每一次相加求出最大值
        {
           for (h = 0; h<m; h++)
            {
                 b[h] += array1[j][h];   //二维数组压缩成一维数组,然后求最大子序列和
            }
             max1 = maxsubsum(b, h);
             if (max1>sum)
                sum = max1;
        }
    }
     return sum;
 }

 int main()
{
    int maxsum=0 ;
  int i,j;
    int maxsubsum(int * arr, int Size);
    int maxSubMatrix(int n, int m, int array1[M][N]);
    int arr[M][N]={1,2,3,4,5,6,7,8,-50,-10,11,12,13,14,15,16};
    for ( i = 0; i < M; i++)
     {
         for ( j = 0; j < N; j++)
         {
             printf("%d\t",arr[i][j]);
         }
        printf("\n");
     }
   
    printf("最大子数组和是:\n");

    maxsum=maxSubMatrix(M, N, arr);
    printf("%d\n",maxsum);
    return 0;
}
运行结果截图:
技术分享图片
体会:
结对开发最重要的是两个人之间的默契程度,编码思想不会产生大的分歧,这需要日积月累的编程配合才能实现!

返回一个二维整数数组中最大子数组的和

标签:else   ++   返回   需要   时间复杂度   for   std   main   图片   

原文地址:https://www.cnblogs.com/GXCblog/p/9826595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!