成员:李小超,马国彬
今天(3月10号),王老师给我们留了一个子数组,求最大值的方法,今天上午的时候求出来了时间复杂度为n方的,今天晚上我和我的搭档马国彬同学,经过一晚上自习的时间终于做出来了。首先我们经过很多讨论,开始的时候有一点想法,可是做了一半就不对了,我的想法是先判断第一个数,然后加上后面的数进行比较max看看谁的比较大,大的给max,然后i++向后进展,其实思路很简单,只不过实现有点问题,这个i的移动特别不好控制,容易乱。我们写的代码如下:
// 最大子数组.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int main(int argc, char* argv[])
{
int a[10]={5,-1,3,2,-10,2,6,3,-1,-2};
int i,max;
max=a[0];
for(i=0;i<10;i++)
{
if(a[i]>max)
max=a[i];
}
for(i=0;i<9;i++)
{
if(a[i]>0)
{
a[i+1]=a[i]+a[i+1];
if(max<a[i+1])
{
max=a[i+1];
}
if(a[i+1]<0)
{
i++;
max=a[i+1];
}
}
}
printf("%d ",max);
return 0;
}
上面是我前面算的,马国彬后面算的,思想都一样。 这些都是我们俩个经过不懈努力做出来的。以上是我们的想法,有什么不足之处,还望指正,谢谢!