zoukankan      html  css  js  c++  java
  • 合作项目

    结组成员:信1201-1柴珏辉 信1201-2邓锐

    一、要求

    1、题目:

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

    2、要求:

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

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

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

    3、结对开发要求: 

        两人结对完成编程任务。

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

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

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

    二、设计思路

    定义数组,存放输入的数和数组分组后各组的和。数组的分组随机产生,即从输入的第一个数开始,每次将连续的n个数存进数组,n为随机数,直到10个数全部分完。计算各分组的和,找出最大值。

    三、程序代码

     1 #include<iostream.h>
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<time.h>
     5 void main()
     6 {
     7     int yuan[10],he[10]={0,0,0,0,0,0,0,0,0,0}; //yuan数组是存放数据的,he数组是存放每个分数组的和
     8     int i,j,ra,p=0,sum=0,max;                  //ra是随机数
     9     for(i=0;i<10;i++)
    10     {
    11         cout<<"请输入第"<<i+1<<"个数:"<<endl;
    12         cin>>yuan[i];
    13     }
    14     srand((unsigned)time(NULL));
    15     i=0;
    16     while(sum<=10)                            //对数组进行分组
    17     {
    18         cout<<""<<i+1<<"个分组:";
    19     //    srand((unsigned)time(NULL));
    20         ra=rand()%4+1;                       //生成一个1~4的随机数
    21         if((sum+ra)>10)
    22         {
    23             ra=10-sum;
    24         }
    25         for(j=0;j<ra;j++)                    //计算分组的和
    26         {
    27             he[i]=he[i]+yuan[p];
    28             cout<<yuan[p]<<",";
    29             p++;
    30         }
    31         cout<<"(ra:"<<ra<<")"<<endl;
    32         if((sum+ra)==10)
    33         {
    34             break;
    35         }
    36         sum=sum+ra;
    37         i++;
    38     }
    39     max=he[0];
    40     p=1;
    41     for(j=0;j<=i;j++)                       /出最大值
    42     {
    43         if(max<he[j])
    44         {
    45             p=j+1;
    46             max=he[j];
    47         }
    48     }
    49     cout<<""<<p<<"个分数组之和的最大值为:"<<max<<endl;
    50 }

    截图:

    四、测试

    1.测试数据:-1,-5,-2,-6,-5,-7,-8,-20,-16,-35

    截图:

    2.测试数据:9,9,9,9,9,9,9,9,9,9

    截图:

    3.测试数据:165469466,42167552167,1626592627,897895178,8975217524,678552464,6777777467,6571467217657,17652642727,45897596524975

    截图:

    五、心得体会

          此次结对编写程序是老师对我们进行开发软件的一个小训练,不同于个人编写。我们并没有像正式软件员工进行团队开发那样分工明确,结组后我们先是共同讨论题目,说出自己的想法。我们两个人的想法大体一致,有几个部分有分歧,但分歧并没有产生矛盾,我们各自讲述想法,谁的设计更好就采用了谁的,构思部分比较顺利,同时,不会的部分互相补充。确定了思路和框架后我们才算是比较明确地分工,他负责编写代码,我负责复审测试。最后对于要修改的部分又一起商量确定。

          这次结对开发过程十分顺利,且比与以往个人编程更有新鲜感,并且通过交流效率更高了。因为是同学之间的结组练习,所以并没有在公司里团队开发那样会出现矛盾分歧导致进程中断,我们都在轻松地氛围下顺利完成。不过这正是迈向团队开发的一次训练,我们从中熟悉了基本流程,也了解了与个人开发的不同,对软件工程也有了进一步的理解。

    结组成员照片:

     

     

  • 相关阅读:
    pytest.4.Fixture
    pytest.3.Assert
    pytest.2.运行多个文件
    [LeetCode 378.] Kth Smallest Element in a Sorted Matrix
    priority_queue 自定义 comparator
    原地调整法查找数组元素
    [LeetCode 436.] Find Right Interval
    [LeetCode 611.] Valid Triangle Number
    二叉树Morris遍历
    用户态IO:DPDK
  • 原文地址:https://www.cnblogs.com/dr73/p/4348569.html
Copyright © 2011-2022 走看看