Problem 1478 环形整数串 from http://acm.fzu.edu.cn/problem.php?pid=1478
2012-10-27 01:18
495 查看
![](http://acm.fzu.edu.cn/image/prodesc.gif)
Problem
Description
你知道最大和子串问题么? 就是给你一个整数串,要你求出其中的一个连续子串,要求其和最大。比如: 串是 -2 2 0 1 -48 1,显然其最大和连续子串是2 0 1,其和是3。
现的问题是如果求环形整数串的最大连续和子串呢?
请编写一个程序解决这个问题。
![](http://acm.fzu.edu.cn/image/prodesc.gif)
Input
本题有多组输入数据,你必须处理到EOF为止每组数据的第一行有一个整数n, (1<=n<=1000000).第2行有n个整数,每个整数都在[-100,100]的范围内
![](http://acm.fzu.edu.cn/image/prodesc.gif)
Output
每组数据输出一个整数,表示环形整数串最大连续子串和。
![](http://acm.fzu.edu.cn/image/prodesc.gif)
Sample
Input
6-2 3 0 1 -48 8021 3
![](http://acm.fzu.edu.cn/image/prodesc.gif)
Sample
Output
824
![](http://acm.fzu.edu.cn/image/prodesc.gif)
Source
FOJ月赛-2007年3月需要注意当min=sum时,sum-min是没有东西的。
[cpp] view
plaincopy
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int main(){
//freopen("in.txt", "r", stdin);
long long sum;
long long max;
long long smax;
long long smin;
long long min;
int num;
int n;
while(cin>>n){
scanf("%d", &num);
smax = num;
max = num;
smin = num;
min = num;
sum = num;
for(int i=1;i<n;++i){
scanf("%d", &num);
sum += num;
smax = smax>0?smax+num:num;
smin = smin<0?smin+num:num;
if(smax>max){
max = smax;
}
if(smin<min)
min = smin;
}
if(sum-min>max && sum!=min)
cout<<sum-min<<endl;
else
cout<<max<<endl;
}
//fclose(stdin);
return 0;
}
相关文章推荐
- Problem 1046 Tempter of the Bone, from http://acm.fzu.edu.cn/problem.php?pid=1046
- Problem 1582 众数问题 from http://acm.fzu.edu.cn/problem.php?pid=1582
- Problem 1453 Bignum Arithmetic from http://acm.fzu.edu.cn/problem.php?pid=1453
- Problem 1410 变位词 from http://acm.fzu.edu.cn/problem.php?pid=1410
- Problem 1057 ab from http://acm.fzu.edu.cn/problem.php?pid=1057
- hdu 2099 整数的尾数 http://acm.hdu.edu.cn/showproblem.php?pid=2099
- hdu 2099 整数的尾数 http://acm.hdu.edu.cn/showproblem.php?pid=2099
- Problem 1607 Greedy division from http://acm.fzu.edu.cn/problem.php?pid=1607
- http://acm.fzu.edu.cn/problem.php?pid=1564 C(n,k)和素数P的问题
- hdu 2099 整数的尾数 http://acm.hdu.edu.cn/showproblem.php?pid=2099
- Problem 1207 半数集问题 from http://acm.fzu.edu.cn/problem.php?pid=1207
- http://acm.fzu.edu.cn/problem.php?pid=2113 数位DP
- Problem 1202 信与信封问题 from http://acm.fzu.edu.cn/problem.php?pid=1202
- fzu 1402 中国剩余定理 http://acm.fzu.edu.cn/problem.php?pid=1402
- http://acm.hdu.edu.cn/showproblem.php?pid=2688 数状数组 线段树
- HDU 1702 http://acm.hdu.edu.cn/showproblem.php?pid=1702
- http://acm.hdu.edu.cn/showproblem.php?pid=1040。。。
- 二分查找求函数的区间最小值&&http://acm.hdu.edu.cn/showproblem.php?pid=2899
- http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2500&cid=1122
- 站站排(重温儿时的游戏) http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1573&cid=1211