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

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

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

 #include<iostream.h>
int begin,end,max;
void Max(int s[],int n)
{
int c,d;
c=max=s[n-];
d=n-;
begin=n-;
end=n-;
for(int i=n-;i>=;i--)
{
if(c>)
c=c+s[i];
else
{
c=s[i];
d=i;
}
if(max<=c)
{
begin=i;
end=d;
max=c;
}
}
}
void main(){
int e1[]={,,,,,};
int e2[]={,,,,,};
int e3[]={-,-,-,-,-,-};
int e4[]={,,,--,};
Max(e1,);
cout<<"e1×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
Max(e2,);
cout<<"e2×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
Max(e3,);
cout<<"e3×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
Max(e4,);
cout<<"e4×î´ó×ÓÊý×éÖ®ºÍΪ"<<max<<endl;
}

结对开发训练(郭林林&amp;胡潇丹)-LMLPHP

05-11 03:10