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

Posted 肉肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个二维整数数组中最大子数组的和相关的知识,希望对你有一定的参考价值。

设计思路:

首先定义一个四行四列的二维数组
通过两个子函数实现,一个求一维最大子数组和,一个求相应列下标二维元素相加和并作比较

1.通过上次的一位数组求最大值,可以先求出每一行最大连续子数组的和

2.记下上下边界元素的下标

3.每一行都有一个最大子数组,将它对应的相同列下标的元素相加,得到i个子数组和存到一个一维数组b中

4.通过循环比较数组b中元素的大小,找到最大值sum

源代码:

 #include<stdio.h>
#define M 4
#define N 4
int MAXarr(int m,int n, int array[M][N]);//整合到一维数组
int maxx(int *arr, int len) ;//求最大和
int main()
{
    int arr[M][N] = {  { -8, 21, 30, 16 }, { 21, 7, -10, 35 }, { 22, 16, 20, -18 }, {12, 75, -9, 6} };
    printf( "最大子数组和:");
    printf("%d", MAXarr(M, N, arr) );
    return 0;
}
int maxx(int *a, int len)
{
    int m[100]={0},f=0,x=0;
    int Y;
    m[x]=0;
    while(f<100)
    {
          if(a[f]>0)
          {

              m[x]=a[f]+m[x];
              f=f+1;
          }
        else 
         {

             x=x+1;
             m[x]=0;
             if(a[++f]>0)
            {
                m[x]=a[f]+m[x];
             }
          f++;
       }
}

Y=m[0];
for(int r=0;r<f;r++)
 {
      if(m[r]>Y)
       {
            Y=m[r];
         }
      r++;
 }
return Y;
}
本次编程由我的搭档冯金硕和我一起完成,由于编程基础较差,我们先在网上查找现有程序进行了解,加以借鉴,修改完成。

 

以上是关于返回一个二维整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章

返回一个二维整数数组中最大子数组的和(二人结对)

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

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

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

返回一个整数数组中最大子数组的和。(续2)---二维数组

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