“连续序列”,直接线性dp即可
因为只能是连续序列,最值无法传递到末尾
所以使用一个maxSum来记录最值
所以使用一个maxSum来记录最值
#include<iostream> #include<math.h> using namespace std; int main(){ int N; int seq[1000000]; long long dp[1000000]; while(cin>>N){ if(N==0) break; cin>>seq[0]; dp[0] = seq[0]; int maxSum = dp[0]; for(int i=1;i<N;i++){ cin>>seq[i]; dp[i] = max((long long)seq[i],dp[i-1]+seq[i]); if(dp[i]>maxSum) maxSum = dp[i]; } cout<<maxSum<<endl; } return 0; }