首次结对开发

题目:返回一个整数数组中最大子数组的和。

要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
结对编程要求:
两人结对完成编程任务。
一人主要负责程序分析,代码编程。
一人负责代码复审和代码测试计划。

发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。

结对成员:郭庆樑,张科

一、解决思路

      首先,我们进行明确的分工,由我负责程序分析,代码编程,张科同学负责代码复审和代码测试。

      然后,程序解决思路是,先比较数组中单个元素的最大值,之后,再比较相邻两个数相加的最大值,再比较三个数相加,以此类推。

      最后,比较各个情况最大值,得出最终结果。

二、源代码

#include<iostream.h>
int main()
{
     int a[10];
     int max[10];
     int Max;
     int i;
     int j;
     int b[10]={0};
     cout<<"请输入数组元素:(可为正数,可为负数)"<<endl;
     for(i=0;i<10;i++)
         cin>>a[i];
     max[0]=a[0];
     max[1]=a[0]+a[1];
     max[2]=a[0]+a[1]+a[2];
     max[3]=a[0]+a[1]+a[2]+a[3];
     max[4]=a[0]+a[1]+a[2]+a[3]+a[4];
     max[5]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5];
     max[6]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6];
     max[7]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7];
     max[8]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8];
     max[9]=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9];
     for(i=0;i<9;i+=2)
     {
         if(max[0]<a[i+1])
         {
             max[0]=a[i+1];
             b[0]=i+2;
         }
     }
     for(i=0;i<8;i++)
     {
         if(max[1]<(a[i+1]+a[i+2]))
         {
              max[1]=a[i+1]+a[i+2];
              b[1]=i+2;
         }
     }
      for(i=0;i<7;i++)
      {
           if(max[2]<(a[i+1]+a[i+2]+a[i+3]))
           {
                max[2]=a[i+1]+a[i+2]+a[i+3];
                b[2]=i+2;
           }
      }
      for(i=0;i<6;i++)
      {
             if(max[3]<(a[i+1]+a[i+2]+a[i+3]+a[i+4]))
             {
                  max[3]=a[i+1]+a[i+2]+a[i+3]+a[i+4];
                  b[3]=i+2;
             }
       }
       for(i=0;i<5;i++)
       {
            if(max[4]<(a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]))
            {
                 max[4]=a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5];
                 b[4]=i+2;
            }
       }
       for(i=0;i<4;i++)
       {
            if(max[5]<(a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]))
            {
                 max[5]=a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6];
                 b[5]=i+2;
             }
        }
         for(i=0;i<3;i++)
        {
              if(max[6]<(a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]+a[i+7]))
              {
                    max[6]=a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]+a[i+7];
                    b[6]=i+2;
              }
         }
          for(i=0;i<2;i++)
          {
                if(max[7]<(a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]+a[i+7]+a[i+8]))
                {
                      max[7]=a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]+a[i+7]+a[i+8];
                      b[7]=i+2;
                }
          }
          for(i=0;i<1;i++)
         {
               if(max[8]<(a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]+a[i+7]+a[i+8]+a[i+9]))
               {
                     max[8]=a[i+1]+a[i+2]+a[i+3]+a[i+4]+a[i+5]+a[i+6]+a[i+7]+a[i+8]+a[i+9];
                     b[8]=i+2;
               }
          }
          Max=max[0];
          for(i=1;i<10;i++)
          {
                 if(Max<max[i])
                 {
                         Max=max[i];
                         j=i;
                 }
           }
           cout<<"最大值为:"<<Max<<endl;
           if(j==9)
                  cout<<"组成元素位置:"<<j+1<<endl;
           else
                 cout<<"组成元素位置:"<<j+1<<"   "<<b[j]<<endl;
           return 0;
}

三、运行结果

四、合作开发体会

       首次结对开发,使我非常不适应,但渐渐地就融入了我们的团队。我做主要思路设计,他负责给我补充,来弥补我的不足,使我减少了检查错误代码的时间。

       遇到的矛盾:代码与测试分配不均,一人提出的想法,另一人难以实现,需要时间来达成共识。

五、工作照

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