• 结队开发之一维数组最大子数组的和 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}

               

          测试结果正确。

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

          

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

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

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

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

           

  • 相关阅读:
    JDK8 直接定义接口中静态方法
    Spring+Netty+WebSocket实例
    基于Maven,Spring+ActiveMQ实现,贴近实际
    Netty+WebSocket简单实现网页聊天
    ActiveMQ简单入门实例
    WCF 的日志配置
    AutoMapper使用笔记
    博客园现代化建设——AutoMapper
    jqplot formatString 日期格式化列表
    MongoDB实战开发 【零基础学习,附完整Asp.net示例】
  • 原文地址:https://www.cnblogs.com/mudanhuakai/p/4346941.html
Copyright © 2020-2023  润新知