最大连续子序列

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 43843    Accepted Submission(s): 20002

 

Problem 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,输出整个序列的首尾元素。


6
-2 11 -4 13 -5 -2
10
-10 1 2 3 4 -5 -23 3 7 -21
6
5 -8 3 2 5 0
1
10
3
-1 -5 -2
3
-1 0 -2
0

Sample Output

20 11 13
10 1 4
10 3 5
10 10 10
0 -1 -2
0 0 0Hint
HintHuge input, scanf is recommended.

题目分析

连DP数组都不需要,只需要一个数sum记录当前连续子序列的和即可,如果sum<0,代表当前子序列对于此后的元素都没有意义,更新sum,然后判断与是否是最大值,如果是最大值就更新记录的区间下标即可。需要注意的题目要求:若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。

代码

#include<bits/stdc++.h>using namespace std;int anss,sum,l,r,anssl,anssr,i,n,a[10005];int main()
{while(scanf("%d",&n),n!=0){for(i=1;i<=n;i++){scanf("%d",&a[i]);}sum=a[1];l=1;r=1;anssl=1;anssr=1;anss=a[1];for(i=2;i<=n;i++){if(sum<0){sum=a[i];l=i;r=i;}else{sum+=a[i];r++;}if(sum>anss){anss=sum;anssl=l;anssr=r;}}if(anss<0){printf("0 %d %d\n",a[1],a[n]);}else{printf("%d %d %d\n",anss,a[anssl],a[anssr]);}}
}

转载于:https://www.cnblogs.com/dyhaohaoxuexi/p/11432844.html

HDU 1231 最大连续子序列 (动态规划)相关推荐

  1. HDU 1231.最大连续子序列-dp+位置标记

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  2. HDU 1231 最大连续子序列:水dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231 题意: 给你一个整数序列,求连续子序列元素之和最大,并输出该序列的首尾元素(若不唯一,输出首坐标 ...

  3. HDU 1231 最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. hdu 1231 最大连续子序列 ,1003 Max Sum;

    题目(1231) #include<stdio.h> #include<iostream> using namespace std; int main() {int K,num ...

  5. 【ACM】 1231 最大连续子序列

    [1231 最大连续子序列 ** Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...

  6. hdu 5586(最大连续子序列和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 官方题解: 令A i =f(A i )−A i  ,然后求一遍最大连续子序列和就能知道最多能增加 ...

  7. HDOJ 1231 最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  8. 杭电1231最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  9. 最大连续子序列和-动态规划

    题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序 ...

最新文章

  1. JS收集:限制输入格式
  2. 云原生环境下对“多活”架构的思考
  3. hadoop学习之:Map、Reduce详解
  4. Cisco Catalyst 4500
  5. django源码简析——后台程序入口
  6. idea 内存溢出解决方法
  7. leetcode64. 最小路径和(dp)
  8. anaconda如何更改环境配置_手把手教新手安装Anaconda配置开发环境
  9. 平板电脑有哪些品牌_平板电脑充电柜使用要注意哪些?安和力
  10. byte 转 int 为什么要0xFF?
  11. 后勤管理系统-在线报修系统
  12. markdown编辑器使用测试-RAYTRACE
  13. 个人网站建设及功能介绍
  14. 人工智能(AI)真的会带来大规模失业吗?
  15. 关于手机常见音频POP音产生的原因以及解决思路(一)——耳机插入与拔出
  16. pdf编辑软件哪个好?编辑pdf的软件分享一款,像word一样好用!
  17. python3类型转换
  18. 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.pdf
  19. 王者荣耀刷金币脚本,买英雄你还愁么?
  20. 遥感干货一览D——文献、文集、论坛、会议整理

热门文章

  1. html:(34):下划线和删除线
  2. html:(10):添加空格和hr
  3. mysql(1):查找语句练习
  4. mysql ndb 关闭_Mysql NDB 常见问题
  5. .data()与.detach()的区别
  6. html中内容超出显示省略号的方法
  7. a标签的href与onclick中使用js的区别
  8. 林俊卿咽音练声法八个步骤(纯净版视频加图文)(转)
  9. org.apache.ibatis.reflection.ReflectionException: Error instantiating class with invalid types
  10. 解决Vue跳转到当前路由报错问题