最大子段和(动态规划详细解析)

news2025/3/14 23:17:06

最大子段和

题目描述

给出一个长度为 n n n 的序列 a a a,选出其中连续且非空的一段使得这段和最大。

输入格式

第一行是一个整数,表示序列的长度 n n n

第二行有 n n n 个整数,第 i i i 个整数表示序列的第 i i i 个数字 a i a_i ai

输出格式

输出一行一个整数表示答案。

样例 #1

样例输入 #1

7
2 -4 3 -1 2 -4 3

样例输出 #1

4

提示

样例 1 解释

选取 [ 3 , 5 ] [3, 5] [3,5] 子段 { 3 , − 1 , 2 } \{3, -1, 2\} {3,1,2},其和为 4 4 4

数据规模与约定

  • 对于 40 % 40\% 40% 的数据,保证 n ≤ 2 × 1 0 3 n \leq 2 \times 10^3 n2×103
  • 对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 2 × 1 0 5 1 \leq n \leq 2 \times 10^5 1n2×105 − 1 0 4 ≤ a i ≤ 1 0 4 -10^4 \leq a_i \leq 10^4 104ai104

题解

这是一道经典的动态规划,解决这个题首先要找到状态转移方程。

最大子段和,首先这个起始位置不能为负数,如果只有一个数,那么最大子段只能说负数,如果不是,且有正数存在的情况,那么起始值肯定不是负数,初始值我们让他等于第一个值。定义dp数组,记录的是当前位置子段最大和,那么这是什么意思呢,在第一个数输进来之后,第二个数输进来,我们就开始比较,如果前面dp加上当前输入这个数比当前单独这个数小的话,很明显,前面的数据我们不需要了,那么就是需要当前这个数,并且以他开始,所以我们此时的dp就是输入的数,后续的一直这样比较。

这个状态转移方成就是 d p [ i ] = m a x ( d p [ i − 1 ] + a [ i ] , a [ i ] ) dp[i] = max(dp[i-1]+a[i],a[i]) dp[i]=max(dp[i1]+a[i],a[i])

在我们进行上述比较的同时,我们需要注意一点那就是dp[n]并不一定是最大值,下面我们看一个例子5 200 200 -888 1 1 ,如果我们直接输出dp[n]那么就是2,很明显最大值是dp[3] 是 405,所以我们再遍历时候,就需要考虑定义一个最大值max 即我下面代码里的res,初始值为-10000,因为题目里说明 − 1 0 4 ≤ a i ≤ 1 0 4 -10^4 \leq a_i \leq 10^4 104ai104,那么他最小也只是-1000,设置为-10000的话,第一个数进来最大值就是第一个数。

#include <bits/stdc++.h>

using namespace std;

int n,res = -100000,dp[200001]={0},a[200001];

int main()
{
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		dp[i] = max(dp[i-1]+a[i],a[i]);
		res = res>dp[i]?res:dp[i];
	}
	cout << res;
	return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读取excel文件read_excel()--Pandas

1. 函数功能 读取excel文件&#xff0c;支持读取xls,xlsx,xlsm等类型的EXCEL文件。能够读取一个sheet表或多个sheet表 2. 函数语法 pandas.read_excel(io, sheet_name0, *, header0, namesNone, index_colNone, usecolsNone, squeezeNone, dtypeNone, engineNone, converte…

MCMC算法

一. MCMC算法定义 MCMC是Markov chain Monte Carlo的缩写&#xff0c;即马尔可夫链蒙特卡罗方法。MCMC是一组利用马尔可夫链从随机分布中取样的算法。生成的马氏链即是对于目标分布的近似估计。常见算法&#xff1a; Metropolis-Hastings算法Gibbs取样算法Hamiltonian Monte C…

单片机AT89C51数码管数字时钟和闹钟二

详细代码讨论加我QQ&#xff1a;1271370903 一、课题的方案设计与论证 1.1摘要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展&#xff0c;单片机的应用正在不断地走向深入&#xff0c;由于它具有功能强&#xff0c;体积小&#xff0c;功耗低&#xff0c;价格便宜…

【我的渲染技术进阶之旅】你可能永远猜不到为什么Filament项目命名为TNT?

文章目录一、疑惑为啥叫TNT&#xff1f;二、寻找真相2.1 百度TNT关键字2.2 GitHub issue2.3 GitHub Discussion三、总结一、疑惑为啥叫TNT&#xff1f; 在我之前的博客【我的渲染技术进阶之旅】如何编译Filament的windows版本程序&#xff1f; 有介绍如何编译Windows版本的Fil…

React 18:Ref(获取DOM对象)

ref介绍 React中所有的操作默认都是在React元素上进行&#xff0c;然后再通过虚拟DOM应用到真实页面上的。这样做的好处我们不在赘述。 虽然如此&#xff0c;在React中依然为我们提供了可以直接访问原生DOM对象的方式。ref就是干这个事的。 ref是reference的简写&#xff0c…

【排序】详细聊聊归并排序(含非递归)

目录 归并排序的基本思想&#xff1a; 递归算法&#xff1a; 递归算法的思路分析&#xff1a; 开辟数组的函数&#xff1a; 递归的函数&#xff1a; 非递归算法&#xff1a; 非递归的思路分析&#xff1a; 边界问题&#xff1a; 时间复杂度和空间复杂度分析&#xff1a…

重建农场2.0:实景三维数据中心一站式解决方案

面向实景三维中国建设&#xff0c;如何扩大产能&#xff0c;不断提升实景三维数据中心的重建算力水平&#xff1f;如何满足快速迭代的需求&#xff0c;不断提升数据中心的应变能力&#xff1f;如何做到“一机多能”&#xff0c;不断外延数据中心的硬件价值&#xff1f;在前不久…

jquery获取父/子iframe页面的URL

最近因为要演示,做个临时ifame框架页面,因此子页面要根据父页面url来指定跳转。下面为ifame页面: 1、获取子页面url: var currentpath = window.location.pathname; console.log(currentpath); 输出为:/JG/TJ_JILU.aspx 2、获取父页面url: let currentTopHref = wind…

IDEA 注释模版

类的主注释 /*** description TODO* author Gaoxueyong* date ${DATE} ${TIME}* version 1.0*/方法的注释 1、创建自己的分组 选择右侧Template Group并输入名称 2、创建自己的模版 选择自己创建的分组然后选择Live Template 然后在Template text框内写入 *** $description…

脑图谱的一致性问题

脑图谱的意义及一致性问题 我们如何定义大脑的解剖结构&#xff0c;并将这些结构与大脑的功能联系起来&#xff0c;可以限制或增强我们对行为和神经系统疾病的理解大量可用的脑图谱给研究健康群体和患病人群的可重复性和描述大脑不同区域参与各种疾病的荟萃分析带来了问题——…

全力推进企业数智赋能发展主线,低代码任重道远

信息化进程 纵观近半个世纪以来我国信息化的发展&#xff0c;经历了20世纪80年代以个人计算机普及应用为特征的数字化阶段&#xff08;信息化1.0&#xff09;&#xff1b;20世纪90年代中期以互联网大规模商用为特征的网络化阶段&#xff08;信息化2.0&#xff09;&#xff1b;…

毕业设计 基于java web的网上招标系统

文章目录前言一、项目设计1. 模块设计注册用户部分管理员部分2. 实现效果二、部分源码最后前言 今天学长向大家分享一个 毕业设计项目: 基于java web的网上招标系统 一、项目设计 1. 模块设计 注册用户部分 1&#xff1a;查看网站流程&#xff1a;查看与网站有关的流程信息…

ZBC成功上线PancakeSwap的糖浆池,并有望在不久上线Binance

近期流支付协议Zebec Protocol正在成为加密行业备受瞩目的Web3生态&#xff0c;其在此前与Visa合作推出可以使用加密货币进行支付的借记卡Zebec Card后&#xff0c;得到了Visa创始团队成员在技术、市场发展前景上的高度认可。与此同时&#xff0c;Zebec Protcocol也与尼泊尔财政…

【react-脚手架】

目录bug初始化脚手架react脚手架创建项目并启动脚手架文件介绍案例&#xff1a;hello react快捷键组件化编码流程脚手架配置代理方法前置说明常用的ajax请求库配置方法一&#xff1a;只能配置一个路径配置方法二&#xff1a;配置多个路径引入bootsrtrap消息订阅与发布&#xff…

YOLO系列目标检测算法——YOLOX

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

毕业设计 基于java web的企业财务管理系统设计与实现

文章目录前言一、项目设计1. 模块设计2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 java web 项目: 基于java web的企业财务管理系统设计与实现 适用于毕业设计、课程设计 一、项目设计 1. 模块设计 管理员的所有模块的功能分析&#xff1a; 部门信息管理…

2022年最火的8种编程语言~工作机会超多~

当今&#xff0c;我们已知的编程语言多达几百种&#xff0c;但是常被大家使用的只占少数&#xff0c;无论你是刚入行的新手还是一名成熟的开发者&#xff0c;了解编程语言的受欢迎程度都很有必要。 最近&#xff0c;国外网站DevJobsScanner公布了一项数据&#xff0c;他们在过…

[附源码]计算机毕业设计Node.js电子商城系统(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

用大约 10 万字的内容对 Java 的核心知识点和常见的 1000 多道面试题,做了详细的介绍

每个技术人都有个大厂梦&#xff0c;我觉得这很正常&#xff0c;并不是饭后的谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司&#xff0c;如果说能够在这样的公司锻炼几年&#xff0c;相信对自己…

粗效过滤器安装技术参数

广州特耐苏净化设备有限公司详细介绍&#xff1a;粗效过滤器主要技术参数 粗效过滤器主要技术参数 粗效过滤器壳体材质&#xff1a;碳钢、不锈钢(304、304L、316、316L)、衬氟、塑料(PP、PVC等)。 粗效过滤器通常安装在泵、压缩机的入口或流量仪表前的管道上。 粗效过滤器安…