博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maximum-SubsequenceSum
阅读量:4461 次
发布时间:2019-06-08

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

题目

给出一段数列,求数列的最大子列和,并输出子列和的首尾元素。例如给出序列{ -2, 11, -4, 13, -5, -2 },最大的子列是{11,-4,13},应当输出{20,11,13}。如果有多个子列和相同,输出索引最小的那个。

如果最大子列和是负的则认为是0.

Sample Input:

10-10 1 2 3 4 -5 -23 3 7 -21

Sample Output:

10 1 4

分析

使用线性搜索找到最大子列和,当更新最大值的时候顺便更新left和right。当子列和是负的时候,更新起始位置到临时变量t

AC代码

#include "bits/stdc++.h"using namespace std;int main(int argc, char const *argv[]){    int k, i, a[10010];    cin >> k;    for(i = 0; i
> a[i]; int mmax = 0, sum = 0; int t=k, l=0, r=k; for(i=k-1;i>=0;i--){ sum += a[i]; if(sum>=mmax){ mmax = sum; l = i; r = t; } if(sum <= 0){ sum = 0; t = i; } } cout << mmax << ' ' << a[l] << ' ' << a[r-1]; return 0;}

转载于:https://www.cnblogs.com/lepeCoder/p/Maximum-SubsequenceSum.html

你可能感兴趣的文章
P2664 树上游戏
查看>>
jQuery 停止动画
查看>>
Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法
查看>>
教你50招提升ASP.NET性能(二十二):利用.NET 4.5异步结构
查看>>
lua连续随机数
查看>>
checkstyle使用介绍
查看>>
会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
查看>>
二维码图片生成
查看>>
在做操作系统实验的一些疑问
查看>>
Log4J日志配置详解
查看>>
NameNode 与 SecondaryNameNode 的工作机制
查看>>
Code obfuscation
查看>>
大厂资深面试官 带你破解Android高级面试
查看>>
node.js系列(实例):原生node.js实现接收前台post请求提交数据
查看>>
SignalR主动通知订阅者示例
查看>>
golang的表格驱动测试
查看>>
用python实现矩阵转置
查看>>
linux 小技巧(磁盘空间搜索)
查看>>
iOS开发——捕获崩溃信息
查看>>
(for 循环)编程找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
查看>>