码迷,mamicode.com
首页 > 其他好文 > 详细

最大子列和问题(20)

时间:2015-06-04 20:41:03      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

输入格式:
输入第1行给出正整数 K (<= 100000);第2行给出K个整数,其间以空格分隔。
输出格式:
在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。

输入样例:
6
-2 11 -4 13 -5 -2
输出样例:
20

最大子列和的算法很多,最简单的可以用三重循环来做,不过O(N^3)的时间复杂度。。。

MOOC里陈越姥姥提到的最优算法在线搜索的时间复杂度是O(N)

下面贴出代码

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int *a = (int*)malloc(n*sizeof(int));
    for (int i = 0; i < n; i++){
        cin >> a[i];
    }

    int max = 0,sum=0;
    for (int i = 0; i < n; i++){
        sum += a[i];
        if (sum>max){
            max = sum;
        }
        else if (sum < 0){
            sum = 0;
        }
    }
    cout << max;
}

 

最大子列和问题(20)

标签:

原文地址:http://www.cnblogs.com/zhouyiji/p/4552753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!