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

和最大子序列

时间:2018-07-22 15:11:32      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:最大   整数   ret   文件的   其他   class   code   mes   turn   

问题描述

对于一个给定的长度为N的整数序列A,它的“子序列”的定义是:A中非空的一段连续的元素(整数)。你要完成的任务是,在所有可能的子序列中,找到一个子序列,该子序列中所有元素的和是最大的(跟其他所有子序列相比)。程序要求你输出这个最大值。

输入格式

输入文件的第一行包含一个整数N,第二行包含N个整数,表示A。
其中
1 <= N <= 100000
-10000 <= A[i] <=  10000

输出格式

输出仅包含一个整数,表示你算出的答案。

样例输入

5
3 -2 3 -5 4

样例输出

4



实现代码

#include <iostream>
#include <vector>
using namespace std;

int max(int a, int b)
{
    return a > b ? a : b;
}

long maxSubArray(vector<int> nums)
{
    long n_max = nums[0];
    vector<int> arr(nums.size(), 0);
    arr[0] = nums[0];
    
    for(int i = 1; i < nums.size(); i++)
    {
        arr[i] = max(arr[i - 1] + nums[i], nums[i]);
        n_max = arr[i] > n_max ? arr[i] : n_max;
    }
    
    return n_max;
}

int main()
{
    int num, len;
    vector<int> nums(0);
    
    cin >> len;
    for(int i = 0; i < len; ++i)
    {
        cin >> num;
        nums.push_back(num);
    }
    
    cout << maxSubArray(nums) << endl;
    
    return 0;
}

和最大子序列

标签:最大   整数   ret   文件的   其他   class   code   mes   turn   

原文地址:https://www.cnblogs.com/coolcpp/p/max-subsequence.html

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