结队开发之一维数组最大子数组的和 1

结队小组成员:信1201-1班  黄亚萍 

                     信1201-1班  盖相庚 

一、题目与要求

     题目:

           返回一个整数数组中最大子数组的和

     要求:

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

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

        3.求所有子数组的和的最大值。要求时间复杂度为O(n)。

     结对编程要求:

         1.两人结对完成编程任务。

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

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

        4.发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。(截止到周四3月19日24:00)

 

二、设计思路

      题目要求是要返回一个整数数组中最大子数组的和,经过和队友商议明白这道题目的大致分为这几层来编程实现

         1、自行输入数组,包括自行输入数值个数以及数值大小;

         2、分别编程实现求得元素个数相同每个子数组的和,并比较大小。可分别求得元素个数相同数组的和的最大值;

         3、编程实现比较不同整数值的数组的最大值。

 

三、源代码

   

 1 // jie.cpp : Defines the entry point for the console application.
 2 //
 3 
 4 #include "stdafx.h"
 5 #include"iostream.h"
 6 # define N 100
 7 int sum1(int k,int a[],int number)
 8 {
 9     int x=0;
10     for(int i=k;i<=number+k-1;i++)    //数组维数为number
11     {
12         x=x+a[i];
13     }
14     return x;
15 }
16 int Largest(int list[],int length)
17 {
18     int sum[N],max1[N];
19     int i,max;
20     for(i=1;i<=length;i++)       //元素个数为i+1
21     {    
22         cout<<"子数组中元素的个数数为"<<i<<"时,子数组的和的最大值为";
23         for(int j=1;j<=length-i+1;j++)   //子数组的第j个元素,求最大值
24         {
25             sum[j]=sum1(j,list,i);
26             if(sum[j]>=max1[i])
27             {
28                 max1[i]=sum[j];
29             }
30         }
31         cout<<max1[i]<<endl;
32     }
33 
34     max=max1[1];
35     for(int k=1;k<=length;k++)
36     {
37         if(max1[k]>=max)
38         {
39             max=max1[k];
40         }
41     }    
42     return max;
43 }
44 
45 int main(int argc, char* argv[])
46 {
47     int i,number,max;
48 
49     cout<<"输入这组数的个数:";
50     cin>>number;
51     cout<<endl;
52     int list[N];
53     int p;
54     cout<<"输入这组数:"<<endl;
55     for(i=1;i<=number;i++)
56     {
57         cout<<""<<i<<"个数为:";
58         cin>>list[i];
59         cout<<endl;
60     }
61     cout<<"最大值为:"<<Largest(list,number)<<endl;
62     cout<<endl;
63     return 0;
64 }

 

四、结果截图

       

五、结果测试

  

    (1)该数组中的元素正数有序{1,2,3,4,5,6,7,}

              

 

    (2该数组中的元素负数有序{-1,-2,-3,-4,-5}

        

       

    (3该数组中的元素正数有序{5,1,3,9,11,2}

        

       

    (4该数组中的元素负数无序{-4,-1,-8,-2,-5,-1,-10,-6}

        

 

    (5该数组中的元素正负数都有,且无序{8,1,-2,0,-1}

           

      测试结果正确。

、合作中的过程、体会以及如何解决冲突(附结对开发的工作照)

      

在本次结对开发的实验中,我主要负责代码的部分。从这次结对开发的过程中,从读懂题意,到具体的设计思想,再到代码的编辑,直至最后的调试,我认识到结对开发的优势所在。

在面对一个项目才提出时,每个人都有自己的理解,这时候将团队里的成员的想法都结合起来,就会有产生一个最符合用户,最合适的立项目的。

在题意明确之后,如何实现这些功能时,在队员的商讨之下,就可以找到一个最便捷的设计思路,或许你会遇到一些自己想不到如何去解决的问题,那么在所有队员的思路的总结之下,那些问题就相对很容易化解。

在最后的测试中,对测试用例的选择,你的测试可能是片面的,那么多个人思考,结果就会向更全面的方向前进,找出问题,解决问题,从而更加完善你的项目。

       

原文地址:https://www.cnblogs.com/mudanhuakai/p/4346941.html