博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 甲级 1007 Maximum Subsequence Sum
阅读量:5043 次
发布时间:2019-06-12

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

 

Given a sequence of K integers { N1​​, N2​​, ..., NK​​ }. A continuous subsequence is defined to be { Ni​​, Ni+1​​, ..., Nj​​ } where 1. 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 (≤). 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

时间复杂度:$O(n)$

代码:

#include 
using namespace std;int a[11111];int dp[11111];int main() { int n; scanf("%d", &n); int ans = 0, temp = 0, cnt = 0, sum = 0; for(int i = 1; i <= n; i ++) scanf("%d", &a[i]); for(int i = 1; i <= n; i ++) { if(a[i] < 0) sum ++; } if(sum == n) printf("0 %d %d\n", a[1], a[n]); else { if(n == 1) printf("%d %d %d\n", a[n], a[n], a[n]); else { for(int i = 0; i < n; i ++) { dp[i + 1] = max(a[i + 1], a[i + 1] + dp[i]); if(dp[i + 1] > ans) { temp = i + 1; ans = dp[i + 1]; } } for(int i = temp; i >= 1 && dp[i] >= 0; i --) cnt = i; printf("%d %d %d\n", ans, a[cnt], a[temp]); } } return 0;}

  

转载于:https://www.cnblogs.com/zlrrrr/p/9655144.html

你可能感兴趣的文章
Mac 下的Chrome 按什么快捷键调出页面调试工具
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>
stdext - A C++ STL Extensions Libary
查看>>
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
mysql忘记root密码
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>