#include<iostream> #include<cmath> using namespace std; long long n,a[200005],dp[200005],ans; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } dp[1]=a[1]; ans=a[1]; for(int i=2;i<=n;i++) { dp[i]=max(a[i],dp[i-1]+a[i]); ans=max(ans,dp[i]); } cout<<ans; }
先上此题的AC代码
思想:当我们选取数组中的某个数时,我们考虑的是对其进行后续的加和操作,这时候我们想要基础数据尽可能大,所以要选取dp[i]+a[i]和a[i]中更大的值,并用ans进行实时更新
标签:P1115,子段,int,long,一维,ans,dp,200005 From: https://www.cnblogs.com/ataraxyyeah/p/17548371.html