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

本文共 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

你可能感兴趣的文章
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
给你的网站404页面加上“宝贝寻亲”公益页面
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
源代码的下载和编译读后感
查看>>
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>