***************************************转载请注明出处:http://blog.csdn.net/lttree***************************************

最大连续子序列

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 17941    Accepted Submission(s): 7941

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,输出整个序列的首尾元素。 

 
Sample Input
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 0
Hint
Hint
Huge input, scanf is recommended.
 

继续做点DP题目。这次是最大连续子序列。
这样的的状态转移方程非常easy,就是  dp[i]=max(dp[i-1]+a[i],a[i])
由于要输出首尾位置,所以我又建立了一个数组来存,到达当前位置的 首部。

这道题。在全部数据都为负数情况下,要求总和为0。输出整个数组首尾位置,
这个实现,能够用一个bool变量。在输入数据时,一个个推断——62MS
也能够再建立一个数组,然后sort排序一下,推断最大数是否为负数——125MS。并且有额外10000大空间消耗

/****************************************
*****************************************
* Author:Tree *
*From :http://blog.csdn.net/lttree *
* Title : 最大连续子序列 *
*Source: hdu 1231 *
* Hint : dp *
*****************************************
****************************************/
#include <stdio.h>
int a[10001],sum[10001],pre[10001];
int main()
{
int n,i;
int Max,Max_i;
// isnegtive来推断是否全部数都小于0
bool isnegtive;
while( scanf("%d",&n)!=EOF && n)
{
isnegtive=false;
for(i=0;i<n;++i)
{
scanf("%d",&a[i]);
if( a[i]>=0 ) isnegtive=true;
} // 假设全部数都小于0,后面不用算,直接输出
if( !isnegtive )
{
printf("0 %d %d\n",a[0],a[n-1]);
continue;
} // 计算最大序列和
sum[0]=pre[0]=a[0];
for( i=1;i<n;++i )
{
if( sum[i-1]+a[i]>a[i] )
{
sum[i]=sum[i-1]+a[i];
pre[i]=pre[i-1];
}
else
sum[i]=pre[i]=a[i];
} // 寻找最大子序列和。存下下标
Max=-999999;
for( i=0;i<n;++i )
{
if( sum[i]>Max )
{
Max=sum[i];
Max_i=i;
}
} printf("%d %d %d\n",Max,pre[Max_i],a[Max_i]);
}
return 0;
}


版权声明:本文博客原创文章,博客,未经同意,不得转载。

ACM-DP最大连续子——hdu1231的更多相关文章

  1. hdu1003 最大连续子序和

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

  2. 【剑指offer】最大和连续子阵列

    个開始,到第3个为止).你会不会被他忽悠住? 输入: 输入有多组数据,每组測试数据包括两行. 第一行为一个整数n(0<=n<=100000),当n=0时,输入结束.接下去的一行包括n个整数 ...

  3. LeetCode 581. Shortest Unsorted Continuous Subarray (最短无序连续子数组)

    Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...

  4. [LeetCode] Shortest Unsorted Continuous Subarray 最短无序连续子数组

    Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...

  5. Java课程课后作业190315之从文档中读取随机数并得到最大连续子数组

    从我上一篇随笔中,我们可以得到最大连续子数组. 按照要求,我们需要从TXT文档中读取随机数,那在此之前,我们需要在程序中写入随机数 import java.io.File; import java.i ...

  6. UVALive 3938 - "Ray, Pass me the dishes!" - [最大连续子列和+线段树]

    题目链接:https://cn.vjudge.net/problem/UVALive-3938 参考刘汝佳书上说的: 题意: 给出一个长度为n的序列, 再给出m个询问, 每个询问是在序列 $[a,b] ...

  7. Leetcode 581.最短无序连续子数组

    最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...

  8. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  9. 【LeetCode】1438. 绝对差不超过限制的最长连续子数组 Longest Continuous Subarray With Absolute Diff Less Than or Equal t

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 滑动窗口 日期 题目地址:https://leetco ...

随机推荐

  1. [Django]models定义choices 字典中的页面显示值

    问题: 在django的models.py 在.我们定义一些choices元组,类别似一些字典值.通常下拉框或单个复选框,例如 0相应的M 1妇女和其他有关 class Area(models.Mod ...

  2. ActiveMQ相关背景(转)

    概述 介绍中间件.MOM.JMS.ActiveMQ,及相互的关系. 中间件 由于业务的不同.技术的发展.硬件和软件的选择有所差别,导致了异构组件或应用并存的局面.要使这些异构的组件协同工作,一个有效的 ...

  3. C++第11周(春)项目1 - 存储班长信息的学生类

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目1 - 存储班长信息的学生类] clas ...

  4. Drupal 7 模 .info 文件描述

    Drupal使用.info文件以节省话题(theme)和模块(modules)基本数据(metadata). 编码:推荐使用UTF-8.这是一个没有BOM(Byte Order Mark). 下面是一 ...

  5. 初识google多语言通信框架gRPC系列(四)C++中使用gRPC

    我的这几篇文章都是使用gRPC的example,不是直接编译example,而是新建一个项目,从添加依赖,编译example代码,执行example.这样做可以为我们创建自己的项目提供借鉴.如果对gR ...

  6. Fitnesse用系列三

    动态决策表 动态决策表是新出,版本号到今年年初还没有了.我看了看文档和演示文稿样本,其效果是作为一种辅助通用决策表.它不是easy匹配的名称和发射.但假设只有一个或两个参数.不管名字怎么都找不到,这并 ...

  7. [WebView五学习]:调试Web Apps

    上一篇我们学习了([WebView学习之四]:迁移到Android4.4版本号的WebView),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jia ...

  8. tb连续aaaaa123aaa自适应

    在连续的字符串数字中,td不会自适应大小,需要加上样式 style="word-break : break-all; overflow:hidden; " <table> ...

  9. Hbase结构简单、作法

    Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.

  10. js+html+css简单的互动功能页面(2015知道几乎尖笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2

    js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html? from=y1.7-1. ...