PAT甲级 1007 Maximum Subsequence Sum (25 分)

PAT练习题(甲级) 1007 Maximum Subsequence Sum (25分)(简要理解动态规划)(Java实现) PAT练习题 1007 Maximum Subsequence Sum (25分)题干 题干 Given a sequence of K integers { N1, N2, …, NK}. A continuous subsequence is defined to be { N​i, Ni+1, …, Nj} where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of 阅读详情

 

Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i+1​​, ..., N​j​​ } 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

动态规划第一次试水,要注意数组和边界条件,但是自己写的发现有3个测试点一直过不去。

 

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 10010;
const int INF = -1000000000;
int N;
int _left = 0, _right = 0;
int max_dp;
int num[maxn];
int dp[maxn];

int main() {
	/*
	10
	-10 5 2 3 5 -5 -23 3 7 -21
	*/
	cin >> N;
	fill(num, num + maxn, INF);
	fill(dp, dp + maxn, INF);
	for (int i = 0; i < N; i++) {
		cin >> num[i];
	}
	dp[0] = num[0];
	max_dp = 0;
	for (int i = 1; i < N; i++) {
		int flag = 0; //flag == 0 表示累积最大值
		if (dp[i - 1] > 0) //累积
		{
			dp[i] = dp[i - 1] + num[i];
			flag = 0;
		}
		else
		{
			dp[i] = num[i];
			flag = 1;
		}
		if (dp[i] > dp[max_dp]) {
			max_dp = i;
			if (flag)
			{
				_left = num[i];
			}

		}
	}
	if(dp[max_dp] >= 0)
		cout << dp[max_dp] << " " << _left << " " << num[max_dp];
	else
		cout << 0 << " " << num[0] << " " << num[N-1];

	return 0;
}

 但是更改记录数组下标的方式,可以通过测试。百思不得其解。

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 10010;
const int INF = -1000000000;
int N;
int _left = 0, _right = 0;
int max_dp;
int num[maxn];
int dp[maxn];
int s[maxn] = {0};

int main() {
	/*
	10
	-10 5 2 3 5 -5 -23 3 7 -21
	*/
	cin >> N;
	fill(num, num + maxn, INF);
	fill(dp, dp + maxn, INF);
	for (int i = 0; i < N; i++) {
		cin >> num[i];
	}
	dp[0] = num[0];
	max_dp = 0;
	s[0] = num[0]; //s存储的是左端点的值
	for (int i = 1; i < N; i++) {
		if (dp[i - 1] > 0) //累积
		{
			dp[i] = dp[i - 1] + num[i];
			s[i] = s[i - 1];
		}
		else
		{
			dp[i] = num[i];
			s[i] = num[i];
		}

	}
	for (int i = 1; i < N; i++) {
		if (dp[i] > dp[max_dp]) {
			max_dp = i;
		}
	}
	if(dp[max_dp] >= 0)
		cout << dp[max_dp] << " " <<s[max_dp]<< " " << num[max_dp];
	else
		cout << 0 << " " << num[0] << " " << num[N-1];

	return 0;
}

 

【亲测可用!】阿里达摩院开源实时数字人对话VideoChat本地部署教程(8G显存可跑) 本文主要记录在部署阿里达摩院开源实时数字人对话VideoChat时遇到的问题,希望对各位技术开发或爱好者有所帮助! 阅读详情

相关推荐

librealsense2 camera.so: undefined symbol:ZN2cV3MatC1EV解决笔记记录

先参考的这个兄弟的办法虽然没解决但是提供了大方向感谢; realsenseD400系列相机报错:undefined symbol: _ZN2cv3MatC1EiiiRKNS_7Scalar_IdEE解决方案 后解决办法参考 No GPU usage on jetson xavier NX · Issue #2326 · IntelRealSense/realsense-ros · GitHubOpenCV_DIR" to a directory containing one of the above f

梁俊星的博客 3517

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

1007 Maximum Subsequence Sum (25 分) (pintia.cn)

codecompasses的博客 848

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7335

PAT 1007 Maximum Subsequence Sum (25 分) Python(含测试点分析) AC

PAT 1007 Maximum Subsequence Sum 含测试点

LoveFishO的博客 387

YOLOv11+BiFPN双向特征金字塔:全方位解析多尺度检测性能优化指南

飞书链接:https://ecn6838atsup.feishu.cn/wiki/EhRtwBe1CiqlSEkHGUwc5AP9nQe?购买即可解锁800+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,每日更新。函数中添加BiFPN的解析逻辑(找到。链接可用,不要多复制空格了。密码:946m22&8。

FJN110的博客 308

4.4 线上vs离线:使用 Langfuse 实现智能体的全方位无死角评估

本文介绍了如何利用Langfuse工具实现AI智能体的全方位评估,包括线上和离线两种评估方式。线上评估通过收集用户实时反馈(如点赞/点踩)来监控真实表现,而离线评估则通过创建标准化数据集进行批量测试和自动评分。文章详细演示了如何为"旅小智"AI应用添加反馈功能、创建评估数据集,并利用Langfuse SDK进行自动化评估和分析。通过这两种评估方式的结合,开发者可以建立数据驱动的AI质量保障体系,实现持续优化和版本迭代。

yonggeit的博客 3315

PAT甲级 1007 Maximum Subsequence Sum (25 分)(测试点分析)

1007Maximum Subsequence Sum(25分) Given a sequence ofKintegers {N​1​​,N​2​​, ...,N​K​​}. A continuous subsequence is defined to be {N​i​​,N​i+1​​, ...,N​j​​} where1≤i≤j≤K. The Maximum...

ItaLink 2755

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

PAT【甲级】1007

题目链接:PAT【甲级】1007 题目简述:给一串数字,数字可正可负可为零。要求去求得连续子序列的最大值,并输出该最大值对应序列的起始数字和结尾数字。特殊情况:如果有多个最大值序列,则输出起始下标和终止下标都最小的;如果给定数字串均为负数,则输出最大值0,并输出数字串起始数字和结尾数字。 #include<string> #include<iostream> #include<vector> using namespace std; vector<int>

qq_41375322的博客 376

新手必看!手把手教你如何在飞牛NAS上玩转Docker容器!(飞牛Nas(fnOS)如何创建Docke容器以及Compose部署项目)

新手必看!手把手教你如何在飞牛NAS上玩转Docker容器!(飞牛Nas(fnOS)如何创建Docke容器以及Compose部署项目)

XiaoqiangClub的博客 1万+

爬虫Incapsula reese84加密案例:Etihad航空(纯算法)

爬虫Incapsula reese84加密案例:Etihad航空,本文就不再讲解如何找加密参数、定位加密参数,以及分析加密的一个过程。就直接从扣算法开始,扣算法前先看之前讲解的加密函数生成的过程,文章会一个函数一个函数的讲解扣算法。fiddler根据规则替换本地文件。调试过程中遇到部分环境不一样是正常的,具体还要根据自己调试的js为准,就像之前补环境时是有二十一个循环,这次扣算法多出一个循环,不过大部分环境是一样的第一个函数:通过document.addEventListener添加了很多事件。

老衲爱洗头的博客 1994

【PAT(甲级)】1007 Maximum Subsequence Sum

【PAT(甲级)】1007 Maximum Subsequence Sum 解题思路,易错点分析,以及详细的代码注释

weixin_55202895的博客 372

YOLO26改进 - 注意力机制 | ParNet并行子网络:多分支协同优化特征表达,增强模型判别能

本文介绍了ParNet注意力机制及其在YOLO26中的应用。ParNet注意力通过并行子网络结构,将网络层组织成多个子网络并行处理输入特征,降低了传统注意力机制在处理长序列时的计算复杂度。该机制采用VGG风格的块和特征融合策略,具有低深度高性能、参数效率高、可扩展性强和并行化能力好等创新点。我们将ParNet注意力引入YOLO26,在检测头部分应用该机制。通过实验训练改进后的模型,有望提升YOLO26在目标检测任务中的性能。

魔改工程师的博客 443

【PAT甲级】1007 Maximum Subsequence Sum (25 分)

Maximum Subsequence Sum 题目描述 Given a sequence of K integers { N​1 , N​2, …, NK }. A continuous subsequence is defined to be { N​i​ , N​i+1​​ , …, Nj​​ } where 1≤i≤j≤K. The Maximum Subsequence is the...

初见还是重逢的博客 392

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

题目链接:PAT甲级 - 1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i+1​​, ..., N​j​​ } where 1≤i≤j≤K. T...

227

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

1007 Maximum Subsequence Sum (25 分) PAT甲级

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

323的博客 355

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

点击链接PAT甲级-AC全解汇总 题目: Given a sequence of K integers { N​1​​ , N​2​​ , …, N​K​​ }. A continuous subsequence is defined to be { N​i​​ , N​i+1​​ , …, N​j​​ } where 1≤i≤j≤K. The Maximum Subsequence is t...

卷子的博客 469

【PAT甲级题解记录】1007 Maximum Subsequence Sum (25 分)

问题描述 求最大连续子序列和,输出这个连续子序列的首值、尾值和序列和(优先最靠前的),如果都为这个序列都为负的输出0和整个序列的首尾值。 解题思路 一道经典又特殊的动态规划,本身很简单,但考虑到要求最靠前的首尾值,容易出错,难度相应提高。

retr0的博客 448

PAT(甲级) 1007 Maximum Subsequence Sum (25分)

题目来源:PAT(甲级) 1006 Sign In and Sign Out (25分) 题目描述: Given a sequence of K integers { N​1, N​2​ , …, N​K}. A continuous subsequence is defined to be { N​i, N​i+1, …, N​j} where 1≤i≤j≤K. The Maximum Subs...

sinat_41835935的博客 174

[PAT 甲级] 1007 Maximum Subsequence Sum (25 分)【动态规划】

1007 Maximum Subsequence Sum (25 分) 原题链接 Given a sequence of K integers { N ​​ }. A continuous subsequence is defined to be { N ​​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subseque...

cp0328的博客 3586

PAT甲级 1007 Maximum Subsequence Sum 25 分

PAT甲级 1007 Maximum Subsequence Sum 25 分题目思考代码 题目 原题描述 即:找到一个字符串的和最大的连续子序列,输出:和,子序列开始元素,子序列结束元素 若子序列全为负数,则输出:0,数组开头元素,数组结束元素 思考 动态规划 sum[i]表示的是以a[i]元素结尾的连续子序列的最大和 状态转移方程: sum[i] = max (sum[i-1]+a[i], a...

weixin_41699413的博客 318

PAT甲级 1007 Maximum Subsequence Sum (25 分)

1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to be { N​i​​, N​i+1​​, ..., N​j​​ } where 1≤i≤j≤K. The Maximum Su...

liuxinghui_SJTU的博客 337

PAT甲级——1007 Maximum Subsequence Sum (25分)

一开始DP思路: 这个最长子序列的开头元素肯定是正数 结尾的元素也肯定是正数 但是中间可能包含若干个负数 所以从两头开始找,遇到符合条件1,2的就计算中间所包含的子序列的和并记录 可以用递归解决 最后再遍历一遍找到最大的子序列和 这种算法最坏的复杂度是10000*10000,肯定超时 所以想办法用DP void f(int r,int t){ if(r>=t){ ...

沉迷单车的追风少年 554

PAT 甲级1007 Maximum Subsequence Sum (25 分)

1007Maximum Subsequence Sum(25分) Given a sequence ofKintegers {N​1​​,N​2​​, ...,N​K​​}. A continuous subsequence is defined to be {N​i​​,N​i+1​​, ...,N​j​​} where1≤i≤j≤K. The Maximum Su...

Dexter 265

PAT 甲级 1007 Maximum Subsequence Sum (25 分)(Java)

文章目录PAT 甲级 1007 Maximum Subsequence Sum (25 分)(Java)题目题意解读解题思路解法解法一解法二 PAT 甲级 1007 Maximum Subsequence Sum (25 分)(Java) 题目 题目链接 题意解读 这题是经典的动态规划题:最大连续子序列和,这题多出来的就是如何存储这个最大子序列和的起始点和终点; 解题思路 这题可以首先写出最基础的最大连续子序列和,然后在此基础上思考如何通过一定的数据结构保存最大连续子序列和的起点和终点; 需要注意的是:

盼你到天明的博客 308

PAT甲级1007 Maximum Subsequence Sum (25 分)题解

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

qq_40438165的博客 1471
上一篇: 字符串Hash
下一篇: PAT甲级 -1045 Favorite Color Stripe (30 分)
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值