当前位置: 首页 > news >正文

算法设计与分析算法实现——动态规划最大子段

输入:整数序列a1,a2,…,an
输出:序列的一个子段,其和Σak最大
注意:当所有整数都为负数时,定义最大子段和为0

使用动态规划,输入数组是a[n];
状态转移方程dp[i]=max(dp[i-1]+a[i],a[i])——这个状态方程可以发现,使得满足“连续”这一要求的重点在于每个dp[i]都包含了当前元素a[i];
使用两个数组start,end分别记录dp[i]的起始数组元素下标start[i]和dp[i]的终止数组元素下标end[i]——方便最后可以最大子段的每个元素;
使用max记录dp[i]的最大值,maxi_i记录下标;

//dp[i]=max{dp[i-1]+a[i],a[i]}
#include<iostream>
#include<vector>
using namespace std;
#define MAX  100000
int main() {int dp[MAX];//dp[i]表示前i的数(包含a[i])的最大子段和int a[MAX];vector<int>start,end;//start[i],end[i]记录dp[i]的起始下标和终止下标int n;//数组a的长度cin >> n;bool flag = 0;//判断数组元素是不是全非正数for (int i = 0; i < n; i++) {cin >> a[i];if (a[i] > 0)//数组元素存在正数flag = 1;}if (flag == 0) {//如果数组a所有元素都是非正数,则输出0cout << 0 << endl;return 0;}dp[0] = a[0];//初始化dp[0],start[0],end[0]start.push_back(0);//end.push_back(0);//int max = 0xffffffff;//记录dp[i]的最值int max_i;//记录使得dp[i]取得最值的下标ifor (int i = 1; i < n; i++) {if (dp[i - 1] + a[i] > a[i]) {//状态转移方程dp[i] = dp[i - 1] + a[i];start.push_back(start[i - 1]);//随dp[i]更新start数组}else {dp[i] = a[i];start.push_back(i);}end.push_back(i);//随着dp[i]更新end数组if (dp[i] > max) {//寻找最大dp[i]max = dp[i];max_i = i;}}for (int i = start[max_i]; i <= end[max_i]; i++) {//输出最大子段cout << a[i] << " ";}return 0;
}

相关文章:

算法设计与分析算法实现——动态规划最大子段

输入&#xff1a;整数序列a1,a2,…,an 输出&#xff1a;序列的一个子段&#xff0c;其和Σak最大 注意&#xff1a;当所有整数都为负数时&#xff0c;定义最大子段和为0 使用动态规划&#xff0c;输入数组是a[n]&#xff1b; 状态转移方程dp[i]max(dp[i-1]a[i],a[i])——这个状…...

JavaWeb-JVM内存管理机制

JavaWeb-JVM内存管理机制 一、JVM内存管理概述1.1 什么是JVM内存管理1.2 物理内存与虚拟内存1.3 内核空间与用户空间二、java中哪些组建需要使用内存2.1 Java堆2.2 线程2.3 类和类加速器2.4 NIO2.5 JNI三、JVM内存结构3.1 PC寄存器3.2 Java栈3.3 堆3.4 方法区3.5 运行时常量池3…...

阿里云oss存储文件上传功能实现(保姆级教程)

先登录&#xff1a; 点击进入控制台 点击左上角导航栏按钮 搜索oss&#xff0c;点击进入 进入之后点击立即开通oss按钮&#xff0c;开通之后点击下图立即创建&#xff0c;弹出创建Bucket 填上Bucket名称&#xff0c;读写权限改为公共读。其他不变点击确定创建&#xff0c;完成…...

centos7配置 局域网自动解析hostname

这样可以让局域网别的电脑直接通过hostname来连接这台电脑。 如果不是windows系统&#xff0c;可以用hostname.local来连接 主要是用到了mdns的功能&#xff0c;需要安装nss-mdns。 vmware下nat模式下&#xff0c;宿主机也可以通过连接hostname使用。 yum install epel-releas…...

wireshark 过滤设置

gpt: Wireshark 是一个网络分析工具&#xff0c;可以用来捕获和分析网络数据包。你可以使用过滤器来筛选并查看你感兴趣的数据包。Wireshark 使用的是基于BPF&#xff08;Berkeley Packet Filter&#xff09;语法的过滤器。以下是一些常见的 Wireshark 过滤器设置&#xff1a;…...

SpringBoot-过滤器Filter+JWT令牌实现登录验证

登录校验-Filter 分析 过滤器Filter的快速入门以及使用细节我们已经介绍完了&#xff0c;接下来最后一步&#xff0c;我们需要使用过滤器Filter来完成案例当中的登录校验功能。 我们先来回顾下前面分析过的登录校验的基本流程&#xff1a; 要进入到后台管理系统&#xff0c;我…...

VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)

目录 一、服务器信息二、192.168.132.35服务器上安装mysql&#xff08;主&#xff09;2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 三…...

python 实现蚁群算法(simpy带绘图)

这里使用了蚁群算法求解了旅行商问题&#xff0c;同时结合了simpy来绘图 选择下一个食物的函数为&#xff1a; probability[i] pheromone[self.now][self.not_to_foods[i]] ** pheromone_w (1 / distance[self.now][self.not_to_foods[i]]) ** distance_w 该条路概率权重该点…...

OpenAI 董事会宫斗始作俑者?一窥伊尔亚·苏茨克维内心世界

OpenAI 董事会闹剧应该是暂告一个段落了,Sam Altman和Greg Brockman等一众高管均已加入微软,还有员工写联名信逼宫董事会的戏码,关注度已经降下来了。 但是,这场宫斗闹剧的中心人物Ilya Sutskever大家关注度不算太高。他本人是纯粹的技术男,极少抛头露面透露其内心世界。…...

Android App 启动状态有几种?

startup state Android 启动状态&#xff08;startup state&#xff09;1.1、冷启动&#xff08;Cold Start&#xff09;1.2、温启动&#xff08;Warm Start&#xff09;1.3、热启动&#xff08;Hot Start&#xff09;1.4、后台启动&#xff08;Background Start&#xff09; 优…...

Spring Cloud Alibaba Sentinel 简单使用

Sentinel Sentinel 主要功能Sentinel 作用常见的流量控制算法计数器算法漏桶算法 令牌桶算法Sentinel 流量控制Sentinel 熔断Sentinel 基本使用添加依赖定义资源定义限流规则定义熔断规则如何判断熔断还是限流自定义 Sentinel 异常局部自定义异常全局自定义异常系统自定义异常…...

nvm切换node后,没有npm

当我们想要在不同的 Node.js 版本之间切换的时候&#xff0c;通常会使用 nvm&#xff08;Node Version Manager&#xff09; 来完成。但是&#xff0c;当我们在使用 nvm 切换 Node.js 版本的时候&#xff0c;可能会遇到没有 npm 的情况。这种情况通常发生在我们在新环境或者重新…...

Redis-高性能原理剖析

redis安装 下载地址&#xff1a;http://redis.io/download 安装步骤&#xff1a; # 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下&#xff0c;并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar -zxvf redis-5.0.3.tar…...

ORA-00600 【3948】,ORA-00600 【3949】

前言 这个报错没有从ORA600那个tool中查到。 回顾 环境 环境是windows 11203 rac环境&#xff0c;非归档数据库 有部分数据文件建到了本地文件系统。目标是将部分数据文件通过switch to copy的形式移动到diskgroup里 流程 srvctl关闭双节点&#xff0c; 启动单节点到moun…...

flink 查看写入starrocks的数据量 总行数

针对该connector: https://github.com/StarRocks/docs.zh-cn/blob/main/loading/Flink-connector-starrocks.md...

全链路压测的步骤及重要性

全链路压测是一种系统性的性能测试方法&#xff0c;旨在模拟真实用户场景下的完整操作流程&#xff0c;全面评估软件系统在不同压力下的性能表现。这种测试方法对于保证应用程序的高可用性、稳定性和可扩展性至关重要。 1. 全链路压测概述 全链路压测是在模拟实际用户使用场景的…...

使用Python实现几种底层技术的数据结构

使用Python实现几种底层技术的数据结构 数据结构(data structure)是带有结构特性的数据元素的集合&#xff0c;它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系&#xff0c;并对这种结构定义相适应的运算&#xff0c;设计出相应的算法&#xff0c;并确保经过这…...

前端面试题【72道】

文章目录 1. 说说你对盒子模型的理解2. css选择器有哪些&#xff1f;优先级&#xff1f;哪些属性可以继承&#xff1f;3. 元素水平垂直居中的方法有哪些&#xff1f;如果元素不定宽高呢&#xff1f;4. 怎么理解回流跟重绘&#xff1f;什么场景下会触发&#xff1f;5. 什么是响应…...

OpenGL 绘制文本(QPainter)

文章目录 一、简介二、实现代码三、实现效果一、简介 OpenGL中并没有绘制文本的相关函数,因此这里仍然用的是Qt中的QPainter工具来绘制文本,但是其相关的定位这里仍然会用OpenGL中的坐标转换。这里对其也进行封装一下,方便后续使用。 二、实现代码 TextDrawable.h #ifndef T…...

windows电脑连接Android和iPhone真机调试

windows电脑连接Android和iPhone真机调试 目前用的是Hbuilder X编辑器&#xff0c;在正常情况下&#xff0c;Android手机需要在 "设置 ----> 更多设置 ----->关于手机 ------> 版本号&#xff08;手指点击5-7下即可打开开发者模式&#xff09;"(我的是vivo的…...

【深度解析】自主机器学习工程师 Neo:从 Agent 工作流到聊天内容审核 Pipeline 落地

摘要&#xff1a; 本文解析 Neo 这类自主机器学习工程师的核心机制&#xff0c;并以聊天内容审核为例&#xff0c;演示如何用大模型生成数据、训练分类器、封装 API&#xff0c;完成端到端 AI 工程闭环。背景介绍&#xff1a;为什么 AI/ML Agent 不只是“会写代码” 在真实 AI …...

小米Agent岗二面:RAG知识库文档更新,不重建全量就搞不定?

&#x1f454;面试官&#xff1a;你们 RAG 知识库上线之后&#xff0c;文档更新了怎么办&#xff1f;总不能每次改个文档就把整个知识库重建一遍吧。 &#x1f64b;‍♂️我&#xff1a;可以直接找到变了的那个 chunk&#xff0c;更新它的向量就行了。 &#x1f454;面试官&a…...

OpenAI发布三款音频模型,欲借差异化路线“通吃”语音AI市场!

OpenAI发布三款音频模型昨天凌晨&#xff0c;OpenAI发布了三款音频模型&#xff1a;GPT-Realtime-2、GPT-Realtime-Translate和GPT-Realtime-Whisper。OpenAI官网称&#xff0c;新模型能让开发者构建可在用户说话时“推理、翻译和转写”的实时语音产品&#xff0c;且三款模型已…...

ML:主成分分析(PCA)的基本原理与实现

在机器学习中&#xff0c;并不是所有任务都直接以“预测标签”或“预测数值”为目标。有时&#xff0c;我们面对的数据本身就具有较高维度&#xff1a;特征很多、变量之间相关性较强、可视化困难、计算开销偏大。这时&#xff0c;一个自然的问题就会出现&#xff1a;能否在尽量…...

如何确定一个自然数是素数(质数),合数 ,偶数 , 奇数 ,约数(因数) ,因子 , 质因子

素数&#xff08;质数&#xff09;定义&#xff1a;大于1的自然数&#xff0c;除了1和它本身外没有其他约数。性质&#xff1a;无限性&#xff08;欧几里得证明&#xff09;、唯一分解定理的基础。示例&#xff1a;2, 3, 5, 7等。合数定义&#xff1a;大于1的自然数&#xff0c…...

从Pro Micro到掌上游戏机:手把手教你用Arduino IDE和Python脚本打造自己的Arduboy(含完整BOM清单)

从Pro Micro到掌上游戏机&#xff1a;手把手打造复古Arduboy全攻略 记得第一次在创客社区看到Arduboy的演示视频时&#xff0c;那个只有信用卡大小的设备竟然能流畅运行《太空侵略者》和《俄罗斯方块》&#xff0c;瞬间点燃了我的制作欲望。这种将现代微控制器与复古游戏体验完…...

保姆级教程:给你的Oh My Zsh装上这4个插件,终端效率直接翻倍(附避坑指南)

终极效率指南&#xff1a;Oh My Zsh四大插件深度配置与实战技巧 如果你已经用上了Oh My Zsh但总觉得还能更高效&#xff0c;这篇文章就是为你准备的。想象一下&#xff1a;输入命令时自动补全、语法错误即时高亮显示、历史命令智能推荐——这些功能不是未来&#xff0c;而是今天…...

自动驾驶安全新维度:V2X通信如何破解人机混行困局

1. 项目概述&#xff1a;当自动驾驶遭遇“沟通障碍”如果你认为自动驾驶汽车和车与车之间的通信是两个独立的问题&#xff0c;那说明你的思考可能还停留在“非此即彼”的阶段。在汽车行业摸爬滚打十几年&#xff0c;我见过太多关于“全自动驾驶乌托邦”的宏大叙事&#xff1a;零…...

终极指南:如何在Blender中无损导入Rhino 3DM文件实现完美协作

终极指南&#xff1a;如何在Blender中无损导入Rhino 3DM文件实现完美协作 【免费下载链接】import_3dm Blender importer script for Rhinoceros 3D files 项目地址: https://gitcode.com/gh_mirrors/im/import_3dm 还在为Rhino到Blender的3D模型转换而烦恼吗&#xff1…...

tikzcd-editor与LaTeX集成:如何将可视化图表转换为TikZ代码

tikzcd-editor与LaTeX集成&#xff1a;如何将可视化图表转换为TikZ代码 【免费下载链接】tikzcd-editor A simple visual editor for creating commutative diagrams. 项目地址: https://gitcode.com/gh_mirrors/ti/tikzcd-editor tikzcd-editor是一款功能强大的可视化编…...