• 结对开发训练(郭林林&胡潇丹)


      此次编程题为:求一个整数数组最大子数组之和,要求时间复杂度为O(n)。

      首先,我们对题目做出分析,做出第一种预行方案,即定义一个数组,当数组中元素大于等于0时,进行累加;若小于0,则与后面的数作比较,若和大于0则继续累加,小于零则以刚才的结果作为一个值,以此类推,最后比较各值,找出最大值。但在编程的过程中,发现这样做很繁琐,同时发现问题,即若有0,或两个值相等该取哪个。最后进行改进,得到最后结果。在做测试时,主要有四类,全正,全负,全0和有正有负有0,每组数也有改变。

      通过这次互换驾驶员与领航员的角色,让我们开阔了思路,逐步完善方案,体验到了结对开发的优势。

     1 #include<iostream.h>
     2 int begin,end,max;
     3 void Max(int s[],int n)
     4 {
     5     int c,d;
     6     c=max=s[n-1];
     7     d=n-1;
     8     begin=n-1;
     9     end=n-1;
    10     for(int i=n-2;i>=0;i--)
    11     {
    12         if(c>0)
    13             c=c+s[i];
    14         else
    15         {
    16             c=s[i];
    17             d=i;
    18         }
    19         if(max<=c)
    20         {
    21             begin=i;            
    22             end=d;            
    23             max=c;
    24         }
    25     }
    26 }
    27 void main(){
    28     int e1[6]={0,0,0,0,0,0};
    29     int e2[6]={1,2,4,5,6,3};
    30     int e3[6]={-3,-3,-1,-5,-4,-7};
    31     int e4[6]={1,4,0,-3-1,8};
    32     Max(e1,6);
    33     cout<<"e1×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
    34     Max(e2,6);
    35     cout<<"e2×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
    36     Max(e3,6);
    37     cout<<"e3×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
    38     Max(e4,6);
    39     cout<<"e4×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
    40 }

  • 相关阅读:
    document 对象
    AdodbStream的方法和属性
    WEB开发者版本
    ATI HD2400
    驱蚊植物
    PHP5+UTF8多文件上传类
    nVIDIA_driver
    ati
    Zend_Http_Client setFileUpload
    Sqlserver2005 数据类型
  • 原文地址:https://www.cnblogs.com/huxiaodan/p/3611199.html
Copyright © 2020-2023  润新知