结对开发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/lsfh/p/4368405.html