题目描述
输入描述
输出描述
输出一个整数,表示最大连续子序列和。
样例1
输入
6 -2 11 -4 13 -5 -2
输出
20
解释
连续子序列和的最大值为:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int dp[MAXN];//dp[i]表示以a[i]元素为结尾的最大连续子序列和
int a[MAXN];//存放序列元素
int main(){
int n;//序列长度
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
}
dp[0] = a[0];//初始化,源头是a[0],非0的下标会在下面递归中被替换
for(int i=1;i<n;i++){//因为dp[0]已经初始化了,从1开始
dp[i] = max(a[i],dp[i-1] + a[i]);//a[i]有两种情况,一是延续前面的子序列和,二是从此开始从头计算,取二者其中最大值
}
int maxL = dp[0];
for(int i=1;i<n;i++){
if(maxL < dp[i]){
maxL = dp[i];
}
}
printf("%d",maxL);
return 0;
}