题解 | #连续子数组最大和#
连续子数组最大和
https://www.nowcoder.com/practice/03d341fb6c9d42debcdd38d82a0a545c
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
vector<int> v;
int N;
cin>>N;
int a;
for(int i=0;i<N;i++)
{
cin>>a;
v.push_back(a);
}
int falg = 0;
//排除全是负数的情况
for(int e : v)
{
if(e>=0)
{
falg = 1;
}
}
if(falg==0)
{
cout<<v[0];
return 0;
}
//用一个数来记录当前和
int ret=0,count=0;
for(int i=0;i<N;i++)
{
count += v[i];
//如果当前和大于前面的和,就替换前面的和
if(count>ret)
{
ret = count;
}
//如果小于0,前面的全部弃掉,
if(count<0)
{
count=0;
}
}
cout<< ret <<endl;
return 0;
}
// 64 位输出请用 printf("%lld")

