标签:最大 整数 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