hduoj1231 注意和1003的区别
来源:互联网 发布:dz seo 编辑:程序博客网 时间:2024/06/06 15:44
注意最后一个样例:并不是全为负数,所以输出应该是子序列的起始终止值!
最大连续子序列
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29013 Accepted Submission(s): 13139Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该 子序列的第一个和最后一个元素。Input测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( < 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。Output对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元 素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。Sample Input6-2 11 -4 13 -5 -210-10 1 2 3 4 -5 -23 3 7 -2165 -8 3 2 5 01103-1 -5 -23-1 0 -20Sample Output20 11 1310 1 410 3 510 10 100 -1 -20 0 0代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int pri[100010];int main(){int n, m, t, cnt = 1;
while(cin >> n&&n)
{
int ans = 0,st,end,x,y,sum,cnt = 0;
for(int i = 1;i <= n;i++) {
cin >> pri[i];
if(pri[i] >= 0)
cnt = 1;
}
if(cnt == 0)
{
printf("0 %d %d\n",pri[1],pri[n]);
continue;
}
else
{
ans = sum = st = end = x = y = pri[1];
for(int i = 2;i <= n;i++)
{
if(sum > 0)//因为等于0的时候要找到最小的i和j
{
sum += pri[i];
end = pri[i];
}
else if(sum <= 0)
{
sum = pri[i];
st = pri[i];
end = pri[i];
}
if(sum > ans)
{
ans = sum;
x = st;
y = end;
}
}
}
if(ans >= 0)
printf("%d %d %d\n",ans,x,y);
/*else
printf("0 %d %d\n",pri[1],pri[n]);*/
}
return 0;}
0 0
- hduoj1231 注意和1003的区别
- 注意 ` ` 和 " " 的区别
- 注意转发和重定向的区别
- (找工作的同学注意了!)签offer和三方的区别和注意
- 需要注意的jQuery 1.1和1.2的区别
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- layout_graviry和gravity的区别及需要注意的问题
- 修改ubuntu的用户名(注意用户名和主机名的区别)
- 初学者需要注意的undefine和null的区别
- 多线程下 ,linux和 windows开发应注意的区别
- 堆和栈的区别(注意文章中的效率比较)
- 注意count、find、binary_search、lower_bound、upper_bound和equal_range的区别
- linux和 windows多线程开发应注意的区别
- 注意android xml里面的id和值得区别
- C#和C++的区别与注意(继续整理)
- Fresco集成Okhttp3
- JAVA 线程
- LevelDb skiplist
- 网站分析(四)
- C语言面试题3
- hduoj1231 注意和1003的区别
- Angular中的缓存
- Video Cards
- java网络编程
- CSS3 Flex 弹性布局教程
- poj 1847 最短路 dijkstra模板(vector邻接表+队列优化)
- SQL语言-数据更新操作
- java基础常见面试题
- day05HTML DOM内置对象