#题解#洛谷P1115 最大子段和#DP#
分析
-
dp[i]为以a[i]为子段末尾的最大子段和
-
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;
}

浙公网安备 33010602011771号