最长连续子序列和
最大连续子数列和一道很经典的算法问题,给定一个数列,其中可能有正数也可能有负数,我们的任务是找出其中连续的一个子数列(不允许空序列),使它们的和尽可能大。
dp[i]表示以A[i]结尾的连续序列的最大和
#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int dp[N],A[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>A[i];
}
//边界
dp[0]=A[0];
for(int i=1;i<n;i++){
dp[i]=max(A[i],dp[i-1]+A[i]);
}
int k=INT_MIN;
for(int i=0;i<n;i++){
if(dp[i]>k){
k=dp[i];
}
}
cout<<k;
return 0;
}