南邮 OJ 2045 罗马PK
2015-08-08 10:29
274 查看
罗马PK
时间限制(普通/Java) : 1000 MS/ 2000 MS 运行内存限制 : 65536 KByte总提交 : 202 测试通过 : 51
比赛描述
一天,机智的罗老师和小马哥想比试以下到底谁更机智,于是他们找到了一个很长的数列串,决定看谁能更快地算出这条长串中子串和的最大值。
这对于身经百战的神牛们通过编程来求解真是小菜一碟,现在想请你帮他们算出正确结果。
eg.长串为(6,-1,5,4,-7),那么子串的最大值为:
6+(-1)+5+4=14
输入
输入的第一行包含一个整数T(1<=T<=20)表示测试用例的数目。接下来有T行输入,每行以一个数N(1<=N<=100000)开头,然后接下来输入N个整数(所有的整数都在-1000到1000之间)。
输出
对于每个测试用例,你应该输出2行。第一行是 "Case
#:",#表示测试用例数。第二行包含3个整数,子串和的最大值,对应字串的开始位置,对应字串的结束位置。如果有超过一个的答案,输出第一个。每两个测试用例之间有一个空白行。
样例输入
2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
样例输出
Case 1:
14 1 4
Case 2:
7 1 6
提示
undefined
题目来源
B12040705
#include<iostream> using namespace std; int main(){ long T,N,i,j,a,sum,max_sum,b,begin,end; cin>>T; for(i=1;i<=T;++i){ cin>>N; sum = 0; max_sum = 0; b = 1; begin = 1; end = 1; for(j=1;j<=N;++j){ cin>>a; sum += a; if(sum<0){ sum = 0; b = j+1; }else if(sum>max_sum){ max_sum = sum; begin = b; end = j; } } cout<<"Case "<<i<<":"<<endl; cout<<max_sum<<" "<<begin<<" "<<end<<endl; if(i<T){ cout<<endl; } } }
相关文章推荐
- autolayout - sizeClass 学习 ~ two
- java基础语法1
- ubuntu安装mysql
- Kafka 与 Flume 对比
- [算法专题] 深度优先搜索&回溯剪枝
- Java基础-IO-File(笔记)
- 南邮 OJ 2044 没有被接待的童鞋
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- hdu1166
- maven依赖范围
- hdu5360 Hiking
- Minimum Size Subarray Sum -- leetcode
- form表单
- [算法专题] 深度优先搜索&回溯剪枝
- Trie树讲解
- 南邮 OJ 2043 有才华的罗老师
- hdu5360优先队列
- scala学习之:trait的理解
- Palindrome Number
- 树莓派控制红外线收发