0
点赞
收藏
分享

微信扫一扫

线性dp:DP6 连续子数组最大和

汤姆torn 2022-04-04 阅读 51

描述

给定一个长度为 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;
}
举报

相关推荐

0 条评论