程序题目6-1

来源:互联网 发布:淘宝卖家钻石 编辑:程序博客网 时间:2024/05/21 12:45

题目描述

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


输入描述

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


输出描述

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


题目解读:

题目是求一个给定的数组的最大子数组和,就是说一个给定的数组中,求其中连续的元素构成的多个子数组的和的最大值。

因为是数组,隐含着要求元素是连续的,所以不需要考虑取出数组中的所有正数相加的这种情况。

程序如下:

#include<iostream>#include<vector>using namespace std;int main(){int n = 0;do{cin>>n;}while(n<1 ||n>5000);vector<int> arr(n);for(int i = 0;i<n;i++){do{cin>>arr[i];}while(arr[i] < -5000 || arr[i] > 5000);}cout<<endl;int sum=0;int max=0;for(int i = 0;i<arr.size();++i){sum = 0;for(int j = i;j<arr.size();++j){sum += arr[j];if(sum>max)max = sum;}}cout<<max;system("pause");return 0;}

1 0
原创粉丝点击