线性最大子数组的求法

成员:李小超,马国彬

今天(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\n",max);

return 0;

}

上面是我前面算的,马国彬后面算的,思想都一样。 这些都是我们俩个经过不懈努力做出来的。以上是我们的想法,有什么不足之处,还望指正,谢谢!

posted @ 2014-03-10 22:45  墨瞋  阅读(222)  评论(0)    收藏  举报