PAT甲级真题1007. Maximum Subsequence Sum

PAT甲级真题(动态规划)——1007 Maximum Subsequence Sum (25 分) 1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N​1, N​2 , …, NK }. A continuous subsequence is defined to be { N​i, N​i+1, …, N​j} where 1≤i≤j≤K. The Maximum Subsequence is the c... 阅读详情

题目链接:https://www.patest.cn/contests/pat-a-practise/1007



题意:给我们n个数,让我们输出这n个数中连续和最大的一段的和,以及这段的起始的数和结尾的数(注意是输出数不是下标),如果所有数都是负数,那么我们输出最大和0并输出第1个数和第n个数。

首先我们可以分析复杂度,n的范围是10000,那么n^2的遍历的复杂度应该能够过,所以直接存储前缀和,再进行n^2暴力遍历应该是可行的。

当然暴力是不提倡的,这里我们还是用双指针的方法来求解。那么我们的指针要怎么进行更新呢,首先如果我们初始双指针都指向0的位置,然后我们移动右指针,并计算中间这段的和,如果当前段内的和小于等于0,我们则舍弃这段,将左指针移动到右指针处。这里有一点需要注意,当第一次出现两个指针都指向0的时候,我们需要更新,举个例子:-1 0 -2这组数据,如果我们最大值不更新中间这个0,那么我们的结果就会是特殊情况:0 -1 -2,实际上应该是0 0 0.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 10000+5;
int a[maxn];
int main() {
	int n;
	scanf("%d", &n);
	int flag = 0;
	for(int i=0; i<n; i++) {
		cin >> a[i];
		if(a[i] >= 0) flag = 1;
	}
	if(!flag) {
		printf("0 %d %d\n", a[0], a[n-1]);
		return 0;
	}
	int sum = 0, Max = 0;
	int l, r, Ml;
	l = Ml = 0;
	r = n-1;
	for(int i=0; i<n; i++) {
		sum += a[i];
		if(sum > Max || (sum == 0 && r == n-1)) {
			Max = sum;
			r = i;
			Ml = l;
		}
		if(sum <= 0) {
			sum = 0;
			l = i+1;
		}
	}
	printf("%d %d %d\n", Max, a[Ml], a[r]);
}


PAT甲级真题 1007 Maximum Subsequence Sum (25分) C++实现(3种方法对比:遍历法, 动态规划法,直接求解法) 题目 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 subsequen... 阅读详情

相关推荐

SAP传输请求全流程详解:从SE10创建到STMS跨环境部署(附常见错误排查)

本文详细解析了SAP传输请求的全流程,从SE10创建到STMS跨环境部署,并提供了常见错误排查方法。涵盖工作台请求、定制请求等类型,以及STMS传输原理和实战操作技巧,帮助用户高效管理SAP系统变更。

weixin_29214335的博客 143

PTA-数据结构 编程题01-复杂度2 Maximum Subsequence Sum

PTA-数据结构 编程题01-复杂度2 Maximum Subsequence Sum 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...

qq_43683133的博客 298

AI应用安全 - Prompt注入攻击

随着大模型的爆火,各行各业都在使用大模型进行智能化改造。但是如何做一个可靠的大模型应用,就需要考虑各种安全问题。本文主要介绍一种常见的安全问题,即prompt注入攻击,并介绍一些防范手段。Prompt Injection Attack(提示注入攻击)是针对大型语言模型(LLM)的一种新兴安全威胁,攻击者通过精心构造的输入提示(prompt)来操纵模型行为,使其产生非预期输出或执行恶意操作。它主要包括两种注入方式,一是直接注入,而是间接注入。

sinat_28694519的博客 1932

PTA甲级考试真题练习7——1007 Maximum Subsequence Sum

题目 生词生句 Maximum Subsequence Sum 最大子序列和 思想 经典的动态规划法,按照下面的步骤走: (1)发现重复子问题:我们的想法应该是从头到尾遍历该数字序列,遍历到i就求从开始到i的序列的最大和,显然遍历到i+1又要将i以前的序列和算出来,所以我们可以得到dp[i]来记录i以前的最大和 (2)得到状态转移方程:dp[i] = max{A[i],dp[i-1]+A[i...

醉等佳人归 313

弘玑RPA进阶攻略

01.弘玑RPA产品概要。02.设计器的安装与卸载。03.设计器特性与使用。

长安诗社社长@-梁瀚文- https://github.com/HevnChin https://gitee.com/HevnChin 3646

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成 1. 放置点 放置点功能位于体量和场地选项卡下地形表面,点开找到放置点,并通过自定义设置点的高程值来创建地形的高程数据。 优点:通过用户自定义高程点来绘制模型,使地形更为精确。 缺点:只适用于面积小的项目,面积太大,人工效率低下。 .

智慧空间实验室 4760

PAT甲级题解

1001 A+B Format (20 分) 1002 A+B for Polynomials (25 分) 1003 Emergency (25 分)

姚军 1038

OpenClaw更新后变傻了?一分钟教你快速恢复(OpenClaw更新版本后降智、缺少权限问题的解决方案)

OpenClaw 版本更新后出现降智问题,AI不再执行具体任务。本文详细分析问题原因,提供最简便的解决方案✅

XiaoqiangClub的博客 3884

PAT甲级真题目录(按题型整理)

原文链接: PAT甲级真题目录(按题型整理) 最短路径 1003. Emergency (25)-PAT甲级真题(Dijkstra算法) 1018. Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS) 1030. Travel Plan (30)-PAT甲级真题(Dijkstra + DFS,输出路径,边权) 1087. All Roa...

qq_29762941的博客 1万+

YOLOv5改进 | 注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制,附二次创新)

本文给家大家带来的改进机制是iRMB,其是在论文Rethinking Mobile Block for Efficient Attention-based Models种提出,论文提出了一个新的主干网络EMO(后面我也会教大家如何使用该主干,本文先教大家使用该文中提出的注意力机制)。其主要思想是将轻量级的CNN架构与基于注意力的模型结构相结合(有点类似ACmix)我将iRMB和C2f结合,然后也将其用在了检测头种进行尝试三种结果进行对比,针对的作用也不相同,但是无论那种实验均有一定涨点效果。

Snu77的博客 2571

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 406

PAT 1007 Maximum Subsequence Sum (最大子列和) 解法大全及规避坑点 C/C++版

求整数数列的最大子列和(含子列范围)问题: 本问题以PAT甲级1007为例:有多种解法,时间复杂度从立方到线性都囊括了。包含如何规避坑点,多种思路求解。如有疑问可在评论区留言。欢迎大牛指正其中不足之处。 求解方法包括:以下三条分支 暴力定义法(立方时间)----> 累加求和法(平方时间)----> 最值查表法(线性时空) (我第一遍做此题的方法) 基于贪心思想动态规划法(线性时...

玮智能的博客 1382

手机银行应用架构设计

网上银行借助互联网、移动通信网络等技术向客户提供金融服务,易受到通讯层面的安全威胁,金融机构应从通讯协议、安全认证、通信链路安全等层面,采取措施有效应对相关风险。网上银行系统服务器端提供网上银行应用服务和核心业务处理功能,金融机构应充分利用物理环境、通信网络、计算环境等领域的防护技术,在攻击者和受保护的资源间建立多道严密的安全防线。 网上银行除直接向用户提供金融服务外,也可能与外部机构开展业务合作。在网上银行系统设计、开发、部署和运营过程中,应充分考虑外部机构的系统可能存在的安全风险,并针对各类风险进行有效

银行信息系统应用架构详解 4831

「PAT甲级真题解析」Advanced Level 1007 Maximum Subsequence Sum

题设给定一组序列, 要求最大的子序列和. (子序列是要求数在原数字中位置连续, 而子数组不要求)。 理论上, 我们只要枚举出所有的子序列进行求和, 然后记录和最大的一组即可。

过美好生活,做高效程序员 5007

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PAT甲级真题-1007 Maximum Subsequence Sum详解优化

1007 Maximum Subsequence Sum 题目链接 https://pintia.cn/problem-sets/994805342720868352/problems/994805514284679168 解题思路 1.一开始的思路好像是叫“在线处理法”;但这种方法能过大部分是因为题目规定了全为负值时取0的特殊情况;而且,无法过值为非正数的情况; for(int i=1;i<=n;i++){ if(sum+Num[i]<0){ sum=0; lnum=0;

高高冷的博客 426

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

1007 Maximum Subsequence Sum PAT甲级真题 {小问题还需解决}

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

weixin_57011178的博客 141

1007.Maximum Subsequence Sum (25)-PAT甲级真题(动态规划dp)

题目 解题 基本上我拿到题就开始做了。犯了好几个错误 1、没有考虑全为负数的情况 2、输出的是数组中的数不是下标 3、最后一个测试点超时(算法问题) 最开始的解题思路是暴力法,然后就犯了第三个错误。 根据网上大神的解题 我才明白,需要 果断舍弃前面输入的和为负数的情况 。利用动态规划算法即可进行求解。(另外我为什么觉得动态规划算法必须要开一个很大的空间呢??这个错误的思想在这里就应该被摒弃掉)...

qq_39992615的博客 393

1007. Maximum Subsequence Sum (25)-PAT甲级真题(最大连续子序列和、动态规划dp)

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 &lt;= i &lt;= j &lt;= K. The Maximum Subsequen...

柳婼 の blog 1万+

A1007 Maximum Subsequence Sum (25 分)PAT甲级真题(C++)【最大子序列和+动态规划】

Given a sequence ofKintegers {N1​,N2​, ...,NK​}. A continuous subsequence is defined to be {Ni​,Ni+1​, ...,Nj​} where1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given seq...

qq_47677800的博客 945

PAT-Apat甲级题1007(python和c++实现)

1007 Maximum Subsequence Sum 作者 CHEN, Yue 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 th给定K个整数{ N1,

qq3342560494的博客 1068

Maximum Subsequence Sum (25)-PAT甲级真题(最大连续子序列和、动态规划dp)

#include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;malloc.h&amp;amp;gt; int main() { int n;//数组的长度 scanf(&amp;quot;%d&amp;quot;, &amp;amp;amp;n); int *List;//定义数组 List = (int*)malloc(n * sizeof(int)); ## ***int

Tao_RY的博客 339

PAT 甲级 1007 Maximum Subsequence Sum

题目描述 从题目名称就可以看出,求和最大的子序列,第一反应是动态规划题 输入描述 输入样例 10 -10 1 2 3 4 -5 -23 3 7 -21 输出描述 For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum s...

qq_26073557的博客 208

1007 Maximum Subsequence Sum (25 分) PAT甲级

1007 Maximum Subsequence Sum (25 分) 链接: 1007 Maximum Subsequence Sum (25 分) 来源: PTA程序设计类实验辅助教学平台 题目大意:给你一个K长度的数组,要求你去找到这个数组中 最大连续子序列的和 ,然后输出这个最大的和、这个序列第一个数、这个序列最后一个数,如果这个序列都为负数,那么输出0和这个数组第一个数和最后一个数,题意还是很好理解的,具体就是怎么去做了。 我们定义maxx为我们的最大和,startx为输出的序列中第一个数,e

323的博客 355

1007 Maximum Subsequence Sum

Given a sequence ofKintegers {N1​,N2​, ...,NK​}. A continuous subsequence is defined to be {Ni​,Ni+1​, ...,Nj​} where1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given seq...

qq_61724470的博客 302
上一篇: PAT甲级真题1006. Sign In and Sign Out
下一篇: PAT甲级真题1008. Elevator
RaAlGhul
博客等级 码龄11年 140粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值