题目:
输入n,数组长度为n,再输入数组的n个元素,输出该数列中最大子数列的和
示例:
输入: 8 6 -2 -3 7 -15 1 2 2
输出: 8
算法:
动归问题,子列和sum每次取值都比较自身加上后一个数之后与后一个数本身哪个更大,最终最大子列和res每次取值都比较当前子列和sum和自身哪个更大
源码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; ++i)
{
cin >> v[i];
}
int sum = 0;
int res = v[0];
for (int i = 0; i < n; ++i)
{
sum = max(sum + v[i], v[i]);
res = max(sum, res);
}
cout << res << endl;
return 0;
}