描述
给定一个长度为 n\n 的数组,数组中的数为整数。
请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,子数组最小长度为1。求这个最大值。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n = 0;
cin >> n;
vector<int> a(n+1);//多一位放最小值-1e9
vector<int> dp(n+1);
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
}
dp[0] =-1e9;//最小值
int ans = dp[0];
for (int i = 1; i <= n; ++i)
{
dp[i] = max(a[i] + dp[i - 1], a[i]);
ans = max(ans, dp[i]);
}
cout << ans;
return 0;
}