结对开发3
题目:返回一个整数数组中最大子数组的和。
要求:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
数组中有1000个元素。
结对编程要求:两人结对完成编程任务。一人主要负责程序分析,代码编程。一人负责代码复审和代码测试计划。
发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。
一、设计思路
首先,我们进行分工,由郭庆樑编写程序代码,由我负责代码复审和代码测试。
解决思路是,我们先比较长度子数组中的最大值,存入一个数组,再比较这个数组中的各个值得大小,最终获得最大值。
对于超过int32最大表示范围,我们的解决方案是只要数组中有足够多的负数,就不会产生如此大的值。
二、源代码
#include<iostream.h>
#include<stdlib.h>
int a[1000];
int Sum(int num,int count)
{
int plus=0;
int i=num;
while(count!=0)
{
plus=plus+a[num];
num++;
count--;
}
return plus;
}
int main()
{
int i,j,k;
int Max;
int max[1000]={0};
int Count=1000;
for(i=0;i<1000;i++)
{
a[i]=10000-rand();
}
for(i=0;i<1000;i++)
{
cout<<a[i]<<'\t';
if((i+1)%5==0)
cout<<endl;
}
for(i=0;i<1000;i++)
{
for(j=0;j<i+1;j++)
{
max[i]=max[i]+a[j];
}
}
Max=max[0];
for(i=0;i<1000;i++)
{
for(j=0;j<Count;j++)
{
if(max[i]<Sum(j,i+1))
max[i]=Sum(j,i+1);
}
Count--;
}
for(i=1;i<1000;i++)
{
if(Max<max[i])
Max=max[i];
}
cout<<"最大值为:"<<Max<<endl;
return 0;
}
四、结果截图
五、总结
经过前两次的合作,我们团队成熟了很多。这次实验工作量较大,我也参与了少部分的代码的编写工作,加快了进程
六、工作照