• 首次结对开发


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

    要求:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    求所有子数组的和的最大值。要求时间复杂度为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;
    }

    三、运行结果

    四、合作开发体会

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

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

    五、工作照

  • 相关阅读:
    jquery ready()的几种实现方法小结
    jQuery之$(document).ready()使用介绍
    jquery的$(document).ready()和onload的加载顺序
    php var_export与var_dump 输出的不同
    PHP获取和操作配置文件php.ini的几个函数
    PHP 网站保存快捷方式的实现代码
    php 图形验证码的3种方法
    面向对象基础01
    提高记忆力
    Python数据分析环境和工具
  • 原文地址:https://www.cnblogs.com/benboerba/p/4345617.html
Copyright © 2020-2023  润新知