#题解#洛谷P1115 最大子段和#DP#

P1115 最大子段和 - 洛谷

分析

  1. dp[i]为以a[i]为子段末尾的最大子段和

  2. dp[i+1]=max( a[i] , dp[i] + a[i] )

代码实现

#include<bits/stdc++.h>
#define int  long long
#define endl '\n'
using namespace std;
const int N = 1e6+10;
int a[N], dp[N];
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	dp[1] = a[1];
	int maxn = dp[1];
	for (int i = 2; i <= n; i++)
	{
		dp[i]=max(a[i],dp[i-1]+a[i]);
		maxn=max(maxn,dp[i]);
	}
	cout<<maxn;
	return 0;
}
posted @ 2025-12-09 19:18  Ahui2667d  阅读(1)  评论(0)    收藏  举报