结对项目2

一.题目:求一个二维整数数组中最大子数组的和

二.设计思想:

定义一个五行五列的二维数组,可以有正有负
通过两个子函数实现,一个求一维最大子数组和,一个求相应列下标二维元素相加和并作比较
(一.)
通过上次的一位数组求最大值,可以先求出每一行最大连续子数组的和
(二.)
记下上下边界元素的下标
(三.)
每一行都有一个最大子数组,将它对应的相同列下标的元素相加,得到i个子数组和存到一个一维数组b中
(四.)
通过循环比较数组b中元素的大小,找到最大值sum

过程:

我和郭瑾慧同学交流了课上各自的想法,通过讨论最后确定这个设计思想,但是我们的编程基础都不好,关于一些算法的实现是边学边写的。

通过这次的结对项目,关于一个目的的实现要先分成小的目的,最后再整合到一起

 

程序:

#include<stdio.h>
#define M 5
#define N 5
int MAXarr(int m,int n, int array[M][N]);//整合到一维数组
int maxx(int *arr, int len) ;//求最大和
int main()
{
    int arr[M][N] = { { -15, -21, 5, -12, 5 }, { -7, 21, 20, 30, 12 }, { 21, 0, -1, 13, 45 }, { 12, 10, 20, -10, -18 }, {12, 45, -9, 21, 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;
}

 

int MAXarr(int m,int n, int array[M][N])
{
    int i, j, h, max, sum=-100000 ;
    int b[100];
    for (i = 0; i < n; i++)
    {
         for (h = i; h < n; h++)
         {
              for (j = 0; j<n; j++)
              {
                   b[j] += array[h][j];
               }
             max = maxx(b, j);
             if (max>sum)
             sum = max;
         }
    } 
   return sum;
}

最后结果是0

 

时间记录日志

 

 

学生:黎雯 郭瑾慧                                           日期:2018/10/21

教师:王建民                                            课程:软件工程

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

10/18

9:50

10:35

 

45

上课

 

 

 

 

10:40

1125

 

45

上课

 

 

 

 

20:00

20:50

 

50

作业

讨论设计思路

 

 

10/20

19:20

21:00

5

95

作业

初步编写程序

 

 

10/21

08:40

14:00

40

270

作业

编程序求二维整型数组最大连续子数组和

 

 

 

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

项目缺陷总结

日期

姓名

黎雯   郭瑾慧

修复时间

 

 

 

 

 

 

描述

10/20

不知道如何压缩子数组

70

 

 

 

 

 

 

10/21

关于列下标相同的元素如何相加

110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

作业号

日期

过程

估计数据

实际数据

累计数据

 

时间

单元

时间

单元

时间

单元

平均值

最大值

最小值

1

10/18

设计思路

30

 

50

 

30

1

30

30

30

 

描述:设计思路

2

10/20

编写程序

100

 

95

 

 

 

 

 

 

 

描述:编写程序求二维整数组最大连续子数组和

3

10/21

编写程序

240

 

270

 

 

 

 

 

 

 

描述:编写程序求二维整数组最大连续子数组和

posted on 2018-10-21 14:21  tuLIWEN  阅读(153)  评论(0编辑  收藏  举报