HDU 1231 最大连续子序列 (动态规划)
最大连续子序列
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 43843 Accepted Submission(s): 20002
Problem Description
Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,
例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和
为20。
在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该
子序列的第一个和最后一个元素。
Input
Output
素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号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 最大连续子序列 (动态规划)相关推荐
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- HDU 1231 最大连续子序列:水dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231 题意: 给你一个整数序列,求连续子序列元素之和最大,并输出该序列的首尾元素(若不唯一,输出首坐标 ...
- HDU 1231 最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- hdu 1231 最大连续子序列 ,1003 Max Sum;
题目(1231) #include<stdio.h> #include<iostream> using namespace std; int main() {int K,num ...
- 【ACM】 1231 最大连续子序列
[1231 最大连续子序列 ** Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdu 5586(最大连续子序列和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 官方题解: 令A i =f(A i )−A i ,然后求一遍最大连续子序列和就能知道最多能增加 ...
- HDOJ 1231 最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 杭电1231最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 最大连续子序列和-动态规划
题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序 ...
最新文章
- JS收集:限制输入格式
- 云原生环境下对“多活”架构的思考
- hadoop学习之:Map、Reduce详解
- Cisco Catalyst 4500
- django源码简析——后台程序入口
- idea 内存溢出解决方法
- leetcode64. 最小路径和(dp)
- anaconda如何更改环境配置_手把手教新手安装Anaconda配置开发环境
- 平板电脑有哪些品牌_平板电脑充电柜使用要注意哪些?安和力
- byte 转 int 为什么要0xFF?
- 后勤管理系统-在线报修系统
- markdown编辑器使用测试-RAYTRACE
- 个人网站建设及功能介绍
- 人工智能(AI)真的会带来大规模失业吗?
- 关于手机常见音频POP音产生的原因以及解决思路(一)——耳机插入与拔出
- pdf编辑软件哪个好?编辑pdf的软件分享一款,像word一样好用!
- python3类型转换
- 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.pdf
- 王者荣耀刷金币脚本,买英雄你还愁么?
- 遥感干货一览D——文献、文集、论坛、会议整理
热门文章
- html:(34):下划线和删除线
- html:(10):添加空格和hr
- mysql(1):查找语句练习
- mysql ndb 关闭_Mysql NDB 常见问题
- .data()与.detach()的区别
- html中内容超出显示省略号的方法
- a标签的href与onclick中使用js的区别
- 林俊卿咽音练声法八个步骤(纯净版视频加图文)(转)
- org.apache.ibatis.reflection.ReflectionException: Error instantiating class with invalid types
- 解决Vue跳转到当前路由报错问题