博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1231 最大连续子序列 (动态规划)
阅读量:5124 次
发布时间:2019-06-13

本文共 1834 字,大约阅读时间需要 6 分钟。

最大连续子序列

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 -210-10 1 2 3 4 -5 -23 3 7 -2165 -8 3 2 5 01103-1 -5 -23-1 0 -20

Sample Output

20 11 1310 1 410 3 510 10 100 -1 -20 0 0HintHint Huge input, scanf is recommended.

题目分析

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

代码

#include
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

你可能感兴趣的文章
什么是REST API?
查看>>
目标检测近5年发展历程概述(转)
查看>>
14. Java基础之泛型
查看>>
spring----06 更多DI知识
查看>>
FFmpeg开发实战(三):FFmpeg 打印音视频Meta信息
查看>>
OSGI(面向Java的动态模型系统)
查看>>
精通 ASP.NET MVC 4 学习笔记(一)
查看>>
laravel框架的数据库链接
查看>>
Unity预计算全局实时GI(gi params)
查看>>
Unknown column 'user_uid' in 'field list' sql错误解决过程
查看>>
约瑟夫问题(Josephus Problem)的两种快速递归算法
查看>>
ajax小结
查看>>
Linux 内核编码风格【转】
查看>>
炎炎夏日需要一个清凉的地 - 自制水冷系统(十一 指尖的思绪之程序篇)
查看>>
所有选择器
查看>>
day10 Pyhton学习
查看>>
c# 路径空格---ProcessStartInfo参数问题
查看>>
IOS 修改UIAlertController的按钮标题的字体颜色,字号,内容
查看>>
datatables 的导出button自定义
查看>>
MYSQL 在当前时间加上或减去一个时间段
查看>>