dp[i]表示以A[i]作为末尾的连续序列的最大和,即A[i]必须作为连续序列的末尾。
动态规划经典入门题
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=10010;
int A[maxn],dp[maxn];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&A[i]);
}
dp[0]=A[0];
for(int i=0;i<n;i++){
dp[i]=max(dp[i-1]+A[i],A[i]);
}
int ans=0;
for(int i=0;i<n;i++){
if(dp[i]>ans){
ans=dp[i];
}
}
printf("%d\n",ans);
return 0;
}