题目1011:最大连续子序列
问题来源
http://ac.jobdu.com/problem.php?pid=1011
问题描述
给定一个数组,让我们求它的最大连续子序列。需要注意的是需要记录最大子序列和的起始和末尾,用两个变量实时跟踪就可以了。
问题分析
求最大连续子序列和有很多种方法,这里采用的是动态规划思想,既快捷有好理解。为了求最大子序列和方法我特意写了一篇总结,请参考:http://www.cnblogs.com/AlvinZH/p/6795647.html
参考代码
// // Created by AlvinZH on 2017/5/2. // Copyright (c) AlvinZH. All rights reserved. // #include <iostream> #include <cstdio> #include <vector> #include <cstring> using namespace std; int a[10005]; int s,e; int MaxSum(int n) { int sum=0,b=0,tempS=0; for(int i=0;i<n;i++) { if(b>0) { b+=a[i]; } else { b=a[i]; tempS=i; } if(b>sum) { sum=b; s=tempS; e=i; } } return sum; } int main() { int n; while(~scanf("%d",&n)&&n) { s=e=0; for(int i=0;i<n;i++) scanf("%d",&a[i]); int ans=MaxSum(n); printf("%d %d %d\n",ans,a[s],a[e]); } }
作者: AlvinZH
出处: http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.