\quad 这是最大子序列和问题,是一个典型的动态规划题目,我在博客中对几个常见的动态规划算法进行了分析。设输入的数保存在数组a[max]中,那么转移方程为dp[i]=max(dp[i-1]+a[i],a[i])。最大子序列和即为dp数组的最大值res,我们记录下zp数组第一次出现最大值的位置last,从last往前将a[i]数组的值加起来,直到值为res为止,此时的位置就是最大子序列的起始位置first。需注意题目规定当输入的数全为负数时输出0和首位、末尾的数,这点需要提前特判。

#include <stdio.h>
#include <algorithm>
using namespace std;const int maxn = 1e4+10;
int a[maxn], dp[maxn];int main(int argc, char const *argv[])
{int K; scanf("%d", &K);for(int i = 1; i <= K; i++) scanf("%d", &a[i]);// 特判:若输入的数全部小于0,则输出0和首位、末尾的数bool flag = true;for (int i = 1; i <= K; ++i){if(a[i]>=0) flag=false;}if(flag){printf("%d %d %d\n", 0, a[1], a[K]);return 0;}// 开始dpdp[1] = a[1];int res = dp[1];for(int i = 2; i <= K; i++){dp[i] = max(dp[i-1]+a[i], a[i]);res = max(res, dp[i]);}int first, last;  // 记录首位和末位for(int i = 1; i <= K; i++){if(dp[i]==res) {last=i;break;}}int temp = 0;for(int i = last; i >= 1; i--){temp += a[i];if(temp==res) {first=i;break;}}printf("%d %d %d\n", res, a[first], a[last]);return 0;
}

PAT甲级1007 Maximum Subsequence Sum (25 分)题解相关推荐

  1. PAT甲级--1007 Maximum Subsequence Sum (25 分)

    题目详情 - 1007 Maximum Subsequence Sum (25 分) (pintia.cn) Given a sequence of K integers { N1​, N2​, .. ...

  2. PAT甲级 -- 1007 Maximum Subsequence Sum (25 分)

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  3. PAT甲级1007 Maximum Subsequence Sum :[C++题解]DP,最大子序列和、求最优的区间方案

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: dp题. 这道题糅合了两个知识点: dp求最值(区间之和) 动态求区间方案:区间之和相等的条件下:要求区间左端点最靠前,如果左端点相 ...

  4. 【PAT甲】1007 Maximum Subsequence Sum (25分),求最大字段和及区间

    problem 1007 Maximum Subsequence Sum (25分) Given a sequence of K integers { N ​1 ​​ , N ​2 ​​ , -, N ...

  5. 【测试点5】1007 Maximum Subsequence Sum (25 分)

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given a sequence of K integers { N​1​​ , N​2​​ , -, N​K​​ }. A co ...

  6. 1007 Maximum Subsequence Sum (25 分) java 题解

    Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { N ...

  7. PAT A 1007. Maximum Subsequence Sum (25)

    原题 Given a sequence of K integers { N1, N2, ..., NK }.  A continuous subsequence is defined to be { ...

  8. 【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC

    题目 读题!读题! 题上让输出最长子串起始位置和终止位置的数字,而不是角标 如果每个数都是负数,则输出0 不要看着测试用例去猜题意,要先把题完整看完了再开始码! 如果自己的测试用例全都通过了,题目的测 ...

  9. 1007 Maximum Subsequence Sum (25 分)【难度: 一般 / 知识点: 最大子序列和】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805514284679168 方法一: 前缀和+枚举 时间复杂度: O(n ...

最新文章

  1. Cell Research:华农解析水虻基因组图谱和肠道微生物组降解规律
  2. [转]开发者需要了解的WebKit(mark)
  3. WINCE基于CH7024实现TV OUT (VGA)功能
  4. 二十四种设计模式:装饰模式(Decorator Pattern)
  5. 中间介(MiddleWare)
  6. PHPJavaScript笔记-后端利用Refresh头带错误信息给前端(野路子操作)
  7. linux查看vnc进程命令_linux命令:VNC服务的配置及使用
  8. 小米POCO X3今日亮相:首发骁龙732G后置6400万四摄
  9. 苹果新机发布在即 供应链齐泼冷水:卖不了7000万台
  10. 查看linux进程的设备io,Linux下查看进程IO工具iopp
  11. JMeter集合点功能的使用
  12. 湖北飞young使用任意路由器教程
  13. 阿里云跨云迁移工具案例实践:腾讯云迁移到阿里云
  14. linux mysql backdoor_Mysql BackDoor
  15. 总结:6个不得不看的APP获客模式
  16. 怎么用class引入svg_让动效更酷炫!4 个常见且常用的 SVG 交互动画方法
  17. GeoServer之发布Geotiff存在的问题
  18. ATLAS/ICESAT-2 NASA 数据产品详细介绍及相关说明文档
  19. 计算机等级考试java题型_全国计算机等级考试二级JAVA笔试题目
  20. chmod不是内部或外部命令

热门文章

  1. Visual Studio 2012 Ultimate RTM 体验(附下载地址和KEY)
  2. 吞吐量达到瓶颈后下降_性能优化四-吞吐量
  3. 多台电脑共用鼠标键盘(局域网内)
  4. WPF中binding一个dictionary
  5. 原生js仿写京东放大图
  6. 头歌大数据技术第二关 大数据从入门到实战 - 第2章 分布式文件系统HDFS
  7. form表单动态设置enctype不生效问题
  8. 《白话机器学习的数学》正则化实现代码
  9. Codeup墓地-2074
  10. 学生考试作弊检测系统 yolov8