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 < ...
随机推荐
- Spring Cloud和Dubbo的对比
- Spring.Boot.1 -- 概览
Spring Boot 是如何简化Java 开发的 SpringBoot的一些重要特征 长久以来,Spring 框架作为Java应用开发的框架地位稳固.最近在云计算.大数据.无结构数据持续化.函数式反 ...
- 漫谈WEB前端学习路线
- assert.deepEqual()
assert.deepEqual(actual, expected[, message]) 深度比较 actual 和 expected 参数,使用比较运算符(==)比较原始值. 只考虑可枚举的&qu ...
- assert.notStrictEqual()详解
严格不相等测试,由不全等运算符确定(===). const assert = require('assert'); assert.notStrictEqual(1, 2); // OK assert. ...
- c++基础_特殊回文数
#include <iostream> using namespace std; int main(){ int n; cin>>n; ;i<;i++){ int tem ...
- [bzoj1078][SCOI2008][斜堆] (贪心)
Description 斜堆(skew heap)是一种常用的数据结构.它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小.但斜堆不必是平衡的,每个结 ...
- Springboot+dubbo+zookeeper整合
本想自己搭建一个Spring+dubbo+zookeeper整合好的框架,想寻找个最佳实现但是遇到各种各样的问题,只好自己看看dubbo starter的源码 整理如下: 通过打上断点来看配置的对不对 ...
- package control(转载)
Package Control(扩展包管理器) []Package Control 可以看做是一个ST的扩展管理器,可以去下载.安装.删除 Sublime Text 3的各种插件.皮肤等. [ ...
- boot简介
目录 1:bootloader介绍2:如何启动一个机器3:工具 Bootloader介绍 MTK的bootloader 主要分为Pre-loader, LK. Pre-loader: 初始化PLL,U ...