博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大连续子序列(dp)
阅读量:6969 次
发布时间:2019-06-27

本文共 1135 字,大约阅读时间需要 3 分钟。

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,输出整个序列的首尾元素。 
#include
#define MIN -1e9int main(){ int max,n,a[10001],zz,j,k,l,i; while(scanf("%d",&n),n) { max=MIN; zz=0; l=j=1; for(i=1;i<=n;i++) { scanf("%d",&a[i]); zz+=a[i]; if(zz>max) { k=i; l=j; max=zz; } if(zz<0) { j=i+1; zz=0; } } if(max<0) { max=0; l=1; k=n; } printf("%d %d %d\n",max,a[l],a[k]); }}

低端dp,觉得没学过算法应该也能想的到了

转载于:https://www.cnblogs.com/mayouyou/p/8987142.html

你可能感兴趣的文章
python下载图片脚本_Python实现批量下载图片的方法
查看>>
堆排序python理解_python堆排序如何使用呢?
查看>>
5道java面试题_5道常见的Java面试题!值得一看
查看>>
mysql数据类型支持比较运_MySQL整理5—数据类型和运算符
查看>>
java反序列化成object_java常用知识:ObjectInputStream反序列化流
查看>>
Java程序编译后的扩展名_一个Java源程序经过编译后,得到的文件扩展名一定是.class。...
查看>>
java 菱形 乱码_(04)Spring MVC之Get方式传参访问Controller,从Controller返回json串出现菱形问号(?????)乱码,解决方法。...
查看>>
php怎么连kafka,php连接kafka
查看>>
php动态生成html,通用PHP动态生成静态HTML网页的代码
查看>>
dede个人中心php在哪,dedecms织梦如何自定义会员中心目录名称的方法
查看>>
linux 运维高级脚本生成器,Linux运维实例 高效运维的工具--shell脚本
查看>>
linux配置redis服务,Linux下安装Redis并设置相关服务
查看>>
poj1106
查看>>
个人知识管理工具 PinPKM
查看>>
Jobs in Codility they're hiring
查看>>
linux下VNC的配置及使用
查看>>
为什么.NET Framework就没有个专门的P/Invoke Library?
查看>>
Silverlight动态设置WCF服务Endpoint
查看>>
lucene对日期(date)和整形(int)处理
查看>>
hdu 4081 次小生成树
查看>>