题目链接:https://vjudge.net/problem/HDU-1003

题目大意:
给出一段序列,求出最大连续子序列之和,以及给出这段子序列的起点和终点。

解题思路:
最长连续子序列之和问题其实有很多种求解方式,这里是用时间复杂度为O(n)的动态规划来求解。

思路很清晰,用dp数组来表示前i项的最大连续子序列之和,如果dp[i-1]>=0的话,则dp[i]加上dp[i-1]能够使dp[i]增大;若dp[i-1]<0的话,则重新以dp[i]为起点,起点更新。

#include <cstdio>

int main()
{
int t, n, i, j, cas = ;
scanf("%d", &t);
while (t--)
{
int dp[]; //dp数组表示以i为终点的最大连续子序列之和
scanf("%d", &n);
for (i = ; i <= n; i++)scanf("%d", &dp[i]);
dp[] = -;
int max = -0x3f3f3f3f;
int s=,start=, e;
for (i = ; i <= n; i++)
{
if (dp[i - ] >= )dp[i] = dp[i - ] + dp[i]; //若dp[i-1]>=0,则第i个数直接在原基础上相加
else s = i; //否则的话,以第i个数为起点重新相加
if (max < dp[i])
{
max = dp[i];
e = i; //记录下此时的终点
start = s; //记录下此时的起点,要注意不要将start与s混淆,s只是为每一段的起点,而start才是当前所遇到的连续子序列和最大的起点
}
}
printf("Case %d:\n", ++cas);
printf("%d %d %d\n", max, start, e);
if (t)printf("\n");
}
return ;
}

2018-04-30

hdu1003 Max Sum【最大连续子序列之和】的更多相关文章

  1. 杭电1003 Max Sum 【连续子序列求最大和】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目意思: 即给出一串数据,求连续的子序列的最大和 解题思路: 因为我们很容易想到用一个max ...

  2. PAT 1007 Maximum Subsequence Sum (最大连续子序列之和)

    Given a sequence of K integers { N1, N2, ..., *N**K* }. A continuous subsequence is defined to be { ...

  3. zoj1003-Max Sum (最大连续子序列之和)

    http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  4. [ACM_动态规划] hdu1003 Max Sum [最大连续子串和]

    Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...

  5. 解题报告:hdu1003 Max Sum - 最大连续区间和 - 计算开头和结尾

    2017-09-06 21:32:22 writer:pprp 可以作为一个模板 /* @theme: hdu1003 Max Sum @writer:pprp @end:21:26 @declare ...

  6. HDU--1003 Max Sum(最大连续子序列和)

    Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...

  7. 最大子序列和——HDU-1003 Max Sum

    题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义dp[i]表示以a[i]为结尾的子序列的和的最大值,因而最大 ...

  8. ACM学习历程—HDU1003 Max Sum(dp && 最大子序列和)

    Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub ...

  9. [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大

    17.8 You are given an array of integers (both positive and negative). Find the contiguous sequence w ...

随机推荐

  1. hud 2554 N对数的排列问题 (规律)

    题目链接 Problem Description 有N对双胞胎,他们的年龄分别是1,2,3,--,N岁,他们手拉手排成一队到野外去玩,要经过一根独木桥,为了安全起见,要求年龄大的和年龄小的排在一起,好 ...

  2. 【Gradle】Gradle环境配置

    Windows环境 下载 作者下载的是gradle-4.1-all.zip,下载地址:http://services.gradle.org/distributions 环境配置 GRADLE_HOME ...

  3. Latex 算法Algorithm

    在计算机科学当中,论文当中经常需要排版算法.相信大家在读论文中也看见了很多排版精美的算法.本文就通过示例来简要介绍一下 algorithms 束的用法.该束主要提供了两个宏包,包含两种进行算法排版的环 ...

  4. box-cox 转换

    box-cox 由于线性回归是基于正态分布的前提假设,所以对其进行统计分析时,需经过数据的转换,使得数据符合正态分布. Box 和 Cox在1964年提出的Box-Cox变换可使线性回归模型满足线性性 ...

  5. ORB feature(O for orientation)

    参考链接:http://blog.csdn.net/yang843061497/article/details/38553765 绪论 假如我有2张美女图片,我想确认这2张图片中美女是否是同一个人.这 ...

  6. VxWorks软件开发项目实例完全解析1-VxWorks简介

    1.前言 VxWorks是专门为实时嵌入式系统设计开发的32位操作系统.主要有如下特点: 实时性强 支持多任务 体积小可裁剪 支持多种CPU 支持网络通信串口通信 汇编+标准C的编程模式.支持C++ ...

  7. Kernel 3.0.8 内存管理函数【转】

    转自:http://blog.csdn.net/myarrow/article/details/7208777 1. 内存分配函数 相关代码如下: #define alloc_pages(gfp_ma ...

  8. [BZOJ3295] [Cqoi2011]动态逆序对(带修改主席树)

    题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序 ...

  9. ansible的安装部署及简单应用

    Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平台由 Mi ...

  10. Highcharts 使用

    官网:https://www.hcharts.cn/ api:https://api.hcharts.cn/highcharts 效果 html代码 <div id="containe ...