您的位置:首页 > 其它

Nyoj 983 首尾相连数组的最大子数组和

2014-05-13 14:58 369 查看
题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=983

参考:/article/10999512.html

#include <iostream>
#include <cstring>
#include <cstdio>
#include <climits>

using namespace std;

int main()
{
int iMax, iMax1, iMax2, sum, tmp, tmp1, iMin, a, n;
while(~scanf("%d", &n))
{
iMax1 = INT_MIN, iMin = INT_MAX, tmp = tmp1 = sum = 0;
while(n--)
{
scanf("%d", &a);
sum += a;
tmp = tmp < 0 ? (tmp + a) : a;//最小连续子段和
tmp1 = tmp1 > 0 ? (tmp1 + a) : a;//最大连续子段和
if(tmp < iMin)
iMin = tmp;
if(tmp1 >  iMax1)
iMax1 = tmp1;
}
iMax2 = sum - iMin;
iMax = max(iMax1, iMax2);
if(iMax < 0)
iMax = 0;
printf("%d\n", iMax);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: