1007. Maximum Subsequence Sum (25)
来源:互联网 发布:centos安装中文包 编辑:程序博客网 时间:2024/05/18 09:17
题目:
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 -21
Sample Output:
10 1 4
解答:
//AA1007#include<cstdio>const int maxn=10010;int a[maxn],dp[maxn],pre[maxn];int main(){ int n,flag=0; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); if(a[i]>=0)flag=1; } if(flag==0){ printf("0 %d %d\n",a[0],a[n-1]); return 0; } dp[0]=a[0]; for(int i=1;i<n;i++){ pre[i]=0; if(a[i]<dp[i-1]+a[i]){ dp[i]=dp[i-1]+a[i]; pre[i]=pre[i-1]; }else{ dp[i]=a[i]; pre[i]=i; } } int u=0; for(int i=1;i<n;i++){//写成i=0也正确,但是浪费时间 if(dp[u]<dp[i]){ u=i; } } printf("%d %d %d",dp[u],a[pre[u]],a[u]); return 0;}
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- Android 7.1 PopupWindow适配问题
- binary-tree-maximum-path-sum Java code
- Python3.6 20个入门级小程序(五)
- 超链接有哪几种 制作表格时WPS怎么在表格中插入超链接
- linux下安装MySQL数据库5.1.73
- 1007. Maximum Subsequence Sum (25)
- QT+Cmake 构建C++工程,调用PCL库,可调试
- xxx不是内部或外部命令,也不是可运行的程序
- printf函数结合自增自减运算的使用
- Qt:播放动态gif图片
- 制作ZedBoard-linaro-desktop-ubuntu全过程之运行linaro系统
- python网络数据采集-Ajax和动态HTML
- 如何合理地估算线程池大小?
- angular的敏感字,判断不为空,不重复运用