C6-4 最大子数组和(加强版)

来源:互联网 发布:淘宝dw手表600是真的吗 编辑:程序博客网 时间:2024/06/04 00:59

C6-4 最大子数组和(加强版) (附加题,不计分)

 
(100/100 分数)
题目描述

给定一个数组a[0,...,n-1],求其最大子数组(长度>=1)和



输入描述

第一行一个整数n(1<=n<=100000),然后依次输入n个整数(每个整数范围[-5000, 5000])


输出描述

输出一个整数表示最大子数组和


样例输入

51 -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;}

和之前那道题没有什么区别.....

0 0
原创粉丝点击