PAT甲 1007. Maximum Subsequence Sum (25)
来源:互联网 发布:凤凰直播软件下载 编辑:程序博客网 时间:2024/05/16 02:03
1007. Maximum Subsequence Sum (25)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, Ni+1, ..., Nj} where 1 <= i <= j <= K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.
Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence.
Input Specification:
Each input file contains one test case. Each case occupies two lines. The first line contains a positive integer K (<= 10000). The second line contains K numbers, separated by a space.
Output Specification:
For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In case that the maximum subsequence is not unique, output the one with the smallest indices i and j (as shown by the sample case). If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.
Sample Input:10-10 1 2 3 4 -5 -23 3 7 -21Sample Output:
10 1 4
最大子段和,dp做的,对于每个数,加上他之后如果整体变负了,那就另起开头,如果不是,那就加上去,每次取最大。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using namespace std;int a[10004];int b[10004];int main(){ int n,mx,l,r,ml,mr; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); l=r=ml=mr=0; b[0]=a[0]; mx=b[0]; for(int i=1;i<n;i++) { if(b[i-1]<0) { b[i]=a[i]; l=r=i; } else { b[i]=b[i-1]+a[i]; r++; } if(mx<b[i]) { ml=l; mr=r; mx=b[i]; } } if(mx<0){ mx=0; ml=0; mr=n-1;} printf("%d %d %d\n",mx,a[ml],a[mr]); return 0;}
- PAT甲 1007. Maximum Subsequence Sum (25)
- pat甲1007. Maximum Subsequence Sum
- 1007. Maximum Subsequence Sum (25)-PAT
- 【PAT】1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- PAT A 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT-1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- Web服务器工作原理概述
- Python CGDAL类——支持栅格数据的栅格计算/线性增强/滤波增强
- 异常:Null value was assigned to a property of primitive type setter of···
- 169. Majority Element
- 中兴2017面试总结
- PAT甲 1007. Maximum Subsequence Sum (25)
- 我的小一步,争取是人类的一大步
- jQuery基础
- sql 多表连接与子查询
- Docker基础教程——数据管理
- QT下udpsocket一段时间接收不到数据的问题
- 5年时间,研究177位百万富翁,发现这13条规律
- VS2010:出现devenv.sln解决方案保存对话框
- 为什么越没本事的人,?自尊心越强(深度好文) (1)