C6-4 最大子数组和(加强版) (附加题,不计分)
(100/100 分数)
题目描述
输入描述
输出描述
样例输入
样例输出
注释
和之前那道题没有什么区别.....
给定一个数组a[0,...,n-1],求其最大子数组(长度>=1)和
输入描述
第一行一个整数n(1<=n<=100000),然后依次输入n个整数(每个整数范围[-5000, 5000])
输出描述
输出一个整数表示最大子数组和
样例输入
5 1 -1 1 1 -1
样例输出
2
注释
本题和C6-1相比数组长度变大,对程序的运行效率要求更加严格。
#include <iostream>
#include <vector>
using namespace std;
int sum_subarray(const vector<int> &array);
int main(){
int n;
cin>>n;
if(n<0||n>100000) return false;
vector<int>array(n);
for(int i=0;i<n;i++){
cin>>array[i];
if(array[i]<-5000||array[i]>5000) return false;
}
cout<<sum_subarray(array)<<endl;
return 0;
}
int sum_subarray(const vector<int> &array){
int sum=0;
int count=sum;
for(int i=0;i<array.size();i++){
count=count+array[i];
if(count>sum)
sum=count;
if(count<0)
count=0;
}
return sum;
}
和之前那道题没有什么区别.....