华师一附中OI组
标题:
P1115 最大子段和
[打印本页]
作者:
admin
时间:
2018-6-29 17:49
标题:
P1115 最大子段和
https://www.luogu.org/problemnew/show/P1115
题目描述
给出一段序列,选出其中连续且非空的一段使得这段和最大。
输入输出格式
输入格式:
第一行是一个正整数 N ,表示了序列的长度。
第二行包含 N 个绝对值不大于10000 的整数 A_i,描述了这段序列。
输出格式:
一个整数,为最大的子段和是多少。子段的最小长度为 1 。
输入输出样例
输入样例#1:
7
2 -4 3 -1 2 -4 3
输出样例#1:
4
说明
【样例说明】
2,-4,3,-1,2,-4,3 中,最大的子段和为4,该子段为 3,-1,2
【数据规模与约定】
对于40% 的数据,有 N≤2000 。
对于 100% 的数据,有 N≤200000 。
作者:
admin
时间:
2018-8-15 09:18
有多种做法,每种做法都应该试验一下,可以学到很多的编程思想
1、盲目穷举 起点,终点,循环计算总和,判断最大值,三重循环,很好理解,编程也很好实现
2、利用前缀和,减少一重循环,前缀和也是一种很普适的思想,编程不难,体验一下
3、二分法
4、精妙的累加判断法。
作者:
黄煦喆
时间:
2018-8-25 16:50
#include<iostream>
using namespace std;
int n,a[200001];
long long ans=-400000,x;
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
x+=a[i];
if(x>ans)ans=x;
if(x<0)x=0;
}
cout<<ans;
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2