结对开发4

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

要求:

输入一个整形数组,数组里有正数也有负数。

数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。

同时返回最大子数组的位置。求所有子数组的和的最大值。

结对编程要求:两人结对完成编程任务。

一人主要负责程序分析,代码编程。

一人负责代码复审和代码测试计划。

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

一、设计思路

         首先,我们还是先进行分工,郭庆樑编写程序代码和主要构思,我负责代码复审和代码测试。

         解决方法是,对于这种数组,我们想到结果会是两种情况,一种是和原先的一样,不需要首尾连接即产生最大子数组,比如,全是正数,或者第一个元素是负数,这种情况下,我们就按照原来的代码实现;第二种情况,即首尾连接可产生更大的子数组,这种情况下,只需求得数组所有元素之和,再减去最小子数组之和,就可求得最大子数组。判断这两种情况,则通过比较这两种子数组的最大值,取较大值即可。

二、源代码

#include<iostream.h>
int Sum(int a[],int num,int count)        //求不同情况下的子数组之和
{
   int plus=0;
   int i=num;
   while(count!=0)
   {
      plus=plus+a[num];
      num++;
      count--;
   }
   return plus;
}
int ForMax(int n)                        //求出最大子数组的值
{
   int i,j,t=0;
   int a[100];
   int sum;
   int Max1,Max2;
   int max[100]={0};
   int Min,min;
   int Count=n;
   cout<<"请输入数组元素:"<<endl;
   for(i=0;i<n;i++)                    //输入数组中的元素
   {
      cin>>a[i];
   }
   for(i=0;i<n;i++)                    //先给max[]数组赋值
   {
      for(j=0;j<i+1;j++)
      {
         max[i]=max[i]+a[j];
      }
   }
   Max1=max[0];
   for(i=0;i<n;i++)                    //比较同长度下子数组的大小
   {
      for(j=0;j<Count;j++)
      {
         if(max[i]<Sum(a,j,i+1))
         {
            max[i]=Sum(a,j,i+1);
         }
      }
      Count--;
   }
   for(i=1;i<n;i++)                    //比较获得同长度最大值下的最大值
   {
      if(Max1<max[i])
      {
         Max1=max[i];
      }
   }
   sum=Min=min=a[0];
   for(i=1;i<n;++i)                    //求出最小子数组
   {
      if(min>0)
         min=a[i];
      else
      {
         min+=a[i];
      }
      if(min<Min)
         Min=min;
      sum+=a[i];
   }
   Max2=sum-Min;                       //数组之和减去最小子数组即是环形数组的最大值
   return Max1>Max2?Max1:Max2;         //比较两种情况下的最大值,返回较大的值
}
int main()
{
   int n;
   cout<<"请输入数组长度:"<<endl;//n<=100
   cin>>n;
   cout<<"子数组最大值为:"<<ForMax(n)<<endl;
   return 0;
}

三、截图

四、总结

这次实验我们本来是准备用指针的,但后来发现不适合此次实验,经过讨论,我们换了一种方法。

五、工作照

posted @ 2015-03-29 14:50  一叶落秋  阅读(128)  评论(1编辑  收藏  举报