homework-01

关于“最大子数组之和”问题,如果我们只是要求得最大的和,而不需要在乎子数组的内容的话,我们可以定义一个s[n]用来存放到n为止最大的子序列和,通过s[n]=max{s[n-1]+a[n],a[n]}(a[n]用来存放输入的数组),这样再取数组s中的最大值,则是我们需要的结果。

这样的算法,我们可以很容易分析出,对于数组a我们只需要扫描一遍就可以得到所需结果,所以时间复杂度为O(n)。同样,由于只使用额外的一个一元数组,空间复杂度也是O(n)。

测试共用四组数据,结果如下

posted @ 2013-09-20 11:51  hopeful_31802  阅读(139)  评论(3编辑  收藏  举报