结对开发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]<<' ';
      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;
}

三、运行结果

四、工作体会

         通过这次结对开发,我们初次接触处理如此大的数据量,一个人编程的脑力明显不够,这时我们可以把程序分成不同的模块,一人解决一个模块,要比一个人解决所有程序,在时间上提速很多。

五、工作照

五、工作照

原文地址:https://www.cnblogs.com/benboerba/p/4367087.html