/*
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
*/
///解题核心:若前一个元素大于零就把他加到当前元素上
int maxSubArray(vector<int>& nums) { //输入一个数组
int pre = 0, maxAns = nums[0];
for(int i=0;i<nums.size();i++) {
pre = max(pre + nums[i], nums[i]); pre表示前边的元素加上当前元素和和当前元素的最大值
maxAns = max(maxAns, pre); maxans表示
}
return maxAns;
}
/*编译实现*/
#include<iostream>
using namespace std;
int max(int a,int b){
return a>b?a:b;
}
int main()
{
int a[100];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int l=INT_MIN;
for(int j=1;j<n;j++){ //这里就是更新数组,将数组中的元素依次更新,结束后数组中的最大值就是最大的子序列
a[j]=max(a[j],a[j-1]+a[j]);
}
for(int k=0;k<n;k++){
l=max(a[k],l);
}
cout<<l<<endl;
return 0;
}