HDU 1231——最大连续子序列(DP)
最大连续子序列
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18603 Accepted Submission(s): 8268
Nj }。当中 1 <= i <= j <= K。最大连续子序列是全部连续子序列中元素和最大的一个,
比如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和
为20。
在今年的数据结构考卷中,要求编敲代码得到最大和。如今添加一个要求,即还须要输出该
子序列的第一个和最后一个元素。
素,中间用空格分隔。假设最大连续子序列不唯一。则输出序号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
20 11 13
10 1 4
10 3 5
10 10 10
0 -1 -2
0 0 0
——————————————————————————————————————————
dp[i]表示以i为结尾的最大连续序列和。则 dp[ i ] = max ( dp[ i - 1 ] + a[i], a[i] )
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define M 10001
using namespace std;
int a[M],dp[M],n;
int main()
{
while(scanf("%d",&n),n){
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
dp[i]=a[i];
}
int f=0,l=0,x=0,maxx=dp[0];//f,x,l用来记录下标
for(int i=1;i<n;++i){ if((dp[i-1]+a[i])>a[i]){ dp[i]=dp[i-1]+a[i]; if(dp[i]>maxx){
maxx=dp[i];
f=x,l=i; //改变下标
}
}
else{
x=i; //假设dp[i]=a[i],则记录点i
if(dp[i]>maxx){
maxx=dp[i];
f=l=i; //改变下标
}
}
//cout<<maxx<<" "<<f<<" "<<l<<endl;
}
if(maxx<0){
cout<<0<<" "<<a[0]<<" "<<a[n-1]<<endl;
}
else cout<<maxx<<" "<<a[f]<<" "<<a[l]<<endl;
}
return 0;
}
HDU 1231——最大连续子序列(DP)的更多相关文章
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 1003 Max Sum && HDU 1231 最大连续子序列 (DP)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDU 1231 最大连续子序列 --- 入门DP
HDU 1231 题目大意以及解题思路见: HDU 1003题解,此题和HDU 1003只是记录的信息不同,处理完全相同. /* HDU 1231 最大连续子序列 --- 入门DP */ #inclu ...
- DP专题训练之HDU 1231 最大连续子序列
Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j < ...
- HDU 1231 最大连续子序列 &&HDU 1003Max Sum (区间dp问题)
C - 最大连续子序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- HDU 1231 最大连续子序列:水dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231 题意: 给你一个整数序列,求连续子序列元素之和最大,并输出该序列的首尾元素(若不唯一,输出首坐标 ...
- HDU 1231 最大连续子序列 (dp)
题目链接 Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= ...
- hdu 1003 hdu 1231 最大连续子序列【dp】
HDU1003 HDU1231 题意自明.可能是真的进步了点,记得刚开始研究这个问题时还想了好长时间,hdu 1231还手推了很长时间,今天重新写干净利落就AC了. #include<iostr ...
- ACM_HDU 1231 最大连续子序列 (dp)_代码分析
Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i < ...
随机推荐
- ubuntulinux 更改时区设置时间
Linux/shell命令的实际应用——查看并修改系统时区 命令: www.2cto.com date -R //查询当前系统时间与默认时区 cp /usr/share/zoneinfo/Asia/S ...
- 【转】C# 二进制,十进制,十六进制 互转
//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(6 ...
- webstorm下开发微信小程序
- Hadoop环境搭建、启动和管理界面查看
一.hadoop环境搭建: 1. hadoop 6个核心配置文件的作用:core-site.xml:核心配置文件,主要定义了我们文件访问的格式 hdfs://hadoop-env.sh:主要配置我们的 ...
- secureCRT 破解
转自:http://www.cnblogs.com/qingtingzhe/articles/5008902.html
- buf.swap32()
buf.swap32() 返回:{Buffer} 将 Buffer 解释执行为一个32位的无符号整数数组并以字节顺序交换到位.如果 Buffer 的长度不是32位的倍数,则抛出一个 RangeErro ...
- JavaScript之作用域和闭包
一.作用域 作用域共有两种主要的工作模型:第一种是最为普遍的,被大多数编程语言所采用的词法作用域,另外一种叫作动态作用域: JavaScript所采用的作用域模式是词法作用域. 1.词法作用域 词法作 ...
- pycharm中提交Git 忽略部分代码
痛点: 项目中,有些配置项,或者比较隐私的东东,不想上传 解决:在项目根路径下,创建.gitignore 文件 文件中可以写文件名.文件路径等 结果: 提交到git,发现果真没有dbconne ...
- python书籍推荐:Python数据科学手册
所属网站分类: 资源下载 > python电子书 作者:today 链接:http://www.pythonheidong.com/blog/article/448/ 来源:python黑洞网 ...
- IDEA常用插件记录
让我们来记录一下常用的IDEA插件:(从其他博客中取了许多图片,出处见图片水印) 1.JRebel for IntelliJ 热部署神器2.Free MyBatis plugin 实现dao层方法与x ...