结对项目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 |
11:25 |
|
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 |
|
|
|
|
|
|
||
|
描述:编写程序求二维整数组最大连续子数组和 |