那么,我们假设n[i]为结尾在第ii个格子的最优解,用ans数组来表示这些数(即ans[i]表示这个集合中的第i个数),那么很显然,答案就是ans[n]。
,如果我们在第i个格子,那么我们可以选择在第ii−1个格子的最优解+第i个格子的值,或第i个格子的值或0。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n[200005],p,ans[200005]={0};
int sum=-9999999;
cin>>p;
for(int i=1;i<=p;i++)
{
cin>>n[i];
ans[i]=max(ans[i-1]+n[i],n[i]);核心代码
sum=max(sum,ans[i]);
}
cout<<sum;
return 0;
}