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

动态规划(6)——01背包问题

欢迎来到博主的专栏:算法解析
博主ID:代码小号

文章目录

    • 牛客网——【模板】01背包
      • 题目解析
      • 题目1算法原理
      • 题目1题解代码。
      • 问题2算法原理
      • 问题2题解代码
      • 01背包问题的滚动数组优化

牛客网——【模板】01背包

题目解析

在这里插入图片描述
关于I/O相关的东西博主就不多赘述了,我们以示例1为例,当前地上有3个物体,背包的体积只有5。物体1的体积是2,价值为10,物体2的体积是4,价值为5,物体3的体积是1,价值为4。(1)要求我们在不超过背包体积的情况下,装下的物体的最大价值。(2)要求我们求出当背包正好装满时,能装下的最大价值。
在这里插入图片描述

对于问题1,由于我们要尽可能的追求最大价值,因此只要背包能装下东西就一定要装下:示例1有下面两种方案。选择价值最大的方案
在这里插入图片描述

对于问题2,只有一种方案能让背包装满,因此虽然价值不是最大的,但是依旧是最终答案
在这里插入图片描述

题目1算法原理

对于问题1,我们要抽象出背包问题的两个重要属性。1、可挑选的物品有限制,2、要求挑选出物品的最大价值,那么我们的状态表示就要涵盖这两个方面。

我们将物品进行从1开始编号,如下
在这里插入图片描述
我们规定,dp[i][j]表示:在[1,i]号物品中进行挑选,物体的总体积不超过j的最大价值。为什么要假设是这个状态表示?首先根据上面的分析,我们知道状态表示要涵盖对选取物体的限制,同时也要确定最大价值,其二则是根据题目要求,题目要求我们在n个物品中挑选体积不超过背包体积的最大价值,而正好我们的状态表示符合这个要求。

那么如何判断我们的状态表示正确与否呢?我们可以先尝试用这个状态表示来推导一下状态转移方程,如果状态转移方程推导的不是很顺利。那么就要尝试更换一个状态表示了。

回到dp[i][j]的状态表示。在[1,i]中挑选物品,对于每一个i,可以将所有的可能的情况分成两种,一种是不将物体i装进背包的情况,一种是将物体i装进背包的情况。

我们根据这两个情况推导状态专题方程。
在这里插入图片描述
如果我们选择不将i装入背包,那么此时我们就要在剩下的物品中,挑选总体积不超过j的多个物品,但是我们由于我们的dp[i][j]需要求的是最大值,那么也就说明,在剩下的物品中挑选总体积不超过j的情况,也必须是最大价值,即dp[i-1][j]。那么此时dp[i][j]=dp[i-1][j]。


如果我们将第i个物体放入背包,那么为了追求最大价值,我们需要在[1,i-1]当中挑选剩下的物品,但是,由于此时背包当中已经放入一个i了,那么剩下的可容纳体积则是j-v[i]。因此该情况下的dp[i][j]=dp[i-1][j-v[i]]+w[i]。由于我们要求出的是最大值,因此状态转移方程如下:
dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i])。但是要注意下标的问题,j-v[i]是可能小于0的,因此只有j-v[i]<=0的时候,我们就认为dp[i-1][j-v[i]]+w[i]的值为0。

在这里插入图片描述

接下来就是初始化问题,由于状态转移方程涉及i-1这个操作,因此我们不能让i=0,因此我们要对其进行初始化。

如果i0,j0,则说明在0个物体当中挑选体积不超过0的最大价值,由于此时没有物体可选,因此背包价值为0,即dp[0][0]=0
如果i=0,j>0,则说明在0个物体当中挑选体积不超过j的最大价值,同样的没有物体可选,因此背包价值为0.dp[0][j]=0

由于题目中会输入n个物体,因此v[i]和w[i]的下标是[0,n-1]范围内,但是我们的dp表的返回值是dp[n][V]。即表示在n个物体当中组合出体积不超过V的最大价值。所以dp表的是一个(n+1)*(V+1)大小的数组。此时我们要注意dp表的状态转移方程与v[i]和w[i]的下标映射关系。即:dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i-1]]+w[i-1])

题目1题解代码。

int main() {int n,V;cin>>n>>V;vector<int> v(n);//物体体积表vector<int> w(n);//物体价格表for(int i=0;i<n;i++) cin>>v[i]>>w[i];vector<vector<int>> dp(n+1,vector<int>(V+1));for(int i=1;i<n+1;i++){for(int j=0;j<V+1;j++){dp[i][j]=dp[i-1][j];//不选i的情况下的最大值if(j-v[i-1]>=0) dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i-1]]+w[i-1]);//选i情况下的最大值,前提是合法}}cout<<dp[n][V]<<endl;
}

问题2算法原理

由于问题2要求是在装满背包的情况下,装取物品的最大价值。 那么我们就可以将状态表示修改一下:dp[i][j]表示,在前i个物品当中进行挑选,当挑选的物品恰好总体积为J时,背包的最大价值。

那么我们可以开始推导状态转移方程了,对于任意i,我们可以将所有的可能的枚举情况,分成两种,一种是选择i的情况,一种是不选i的情况。因此我们需要推导出这两种情况下dp[i][j]的最大值。

对于不选i的情况,此时我们可以在剩下的i-1个物品中挑选恰好体积等于j的最大值,那么这段描述不是符合dp[i-1][j]的状态表示?因此状态转移方程为:dp[i-1][j]。

对于选i的情况,此时由于物品i已经被选进背包了,此时背包容量只剩j-v[i]。物品还剩下i-1个可以挑选,因此我们需要在剩下的i-1个物品进行挑选,使其总体积恰好为j-v[i]的情况下的最大价值,那么这段描述的状态表示就是dp[i-1][j-v[i]]。由于物品i已经被选上了,因此选i的背包价值为: dp[i][j]=dp[j-v[i]]+w[i]

但是有一个问题出现了,如果dp[i-1][j-v[i]]有没有可能不存在?当然是有可能的,因为剩下的i-1个物体很有可能怎么凑,都凑不出j-v[i]这个体积,那么相应的,dp[i][j]的值也就不存在了。那么我们就要思考一个问题了,对于非法的状态表示(即无法凑满总体积为j的物品),该用什么值来表示呢?有人说既然背包没有东西,那不就是没有价值。因此用0来表示。但是我们再思考一下,0这个值一定是非法的吗?在前面讨论初始化的时候,博主是不是说过,当i0时,j0时,此时有0个物体可挑选,需要让挑选物品的总体积恰好为0。这个状态明明是合法的,而且由于此时什么也没挑,因此背包的最大价值为0,因此0不是非法状态下的取值。我们可以使用-1来表示非法状态下的表示。

因此状态转移方程为:dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i])(dp[i-1][j-v[i]]合法的情况下(不为-1))。

接下来就是初始化的问题,i0时,j0时合法,因此背包价值为0,dp[0][0]=0.当i==0,j>0时,此时无法凑成总体积恰好为j的情况,因此是非法的情况,即dp[0][j]=-1。那么最后一个细节就是体积表和价值表与dp表之间的映射问题了。

问题2题解代码

#include <iostream>
#include <vector>
using namespace std;int main() {int n,V;cin>>n>>V;vector<int> v(n);//物体体积表vector<int> w(n);//物体价格表for(int i=0;i<n;i++) cin>>v[i]>>w[i];vector<vector<int>> dp(n+1,vector<int>(V+1));for(int i=1;i<n+1;i++){for(int j=0;j<V+1;j++){dp[i][j]=dp[i-1][j];//不选i的情况下的最大值if(j-v[i-1]>=0) dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i-1]]+w[i-1]);//选i情况下的最大值,前提是合法}}cout<<dp[n][V]<<endl;//问题1的结果dp.resize(n+1,vector<int>(V+1));//重新复用一下dp表for(int j=1;j<V+1;j++) dp[0][j]=-1;for(int i=1;i<n+1;i++){for(int j=0;j<V+1;j++){dp[i][j]=dp[i-1][j];//选i且合法的情况if(j-v[i-1]>=0&&dp[i-1][j-v[i-1]]!=-1) dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i-1]]+w[i-1]);//}}cout<<(dp[n][V]==-1?0:dp[n][V])<<endl;//问题2的结果
}

01背包问题的滚动数组优化

根据状态转移方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i-1]]+w[i-1]);对于任意一个位置的dp[i][j],其取值返回都只在上一行当中。
在这里插入图片描述
(写到这里博主的截图工具有点用不了了,但是又是因为在学校机房写的,因此不想关机重写hh,那就用截图键凑合看吧)

我们可以看到实际上只需要两行的数组,只要下面一行填完了,就让下面一行去作为上面一行继续更新。那么就可以实现空间优化。
在这里插入图片描述
实际上这个工作只需要一行数组就能完成。如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

由于我们对于任意一个dp[i][j],我们都只会用到上一行,以及上一行当中左边的某一个值。因此如果我们之开一行数组,然后从右往左遍历dp。这样dp表就可以仅使用一维的情况下,完成整个过程,节省了空间开销。

代码如下:

#include <iostream>
#include <vector>
using namespace std;int main() {int n,V;cin>>n>>V;vector<int> v(n);//物体体积表vector<int> w(n);//物体价格表for(int i=0;i<n;i++) cin>>v[i]>>w[i];vector<int> dp(V+1);//只需要一行dpfor(int i=1;i<n+1;i++){//注意虽然dp表只有一行,但是状态转移方程并没有改变,因此i不能删除for(int j=V;j>=v[i-1];j--){dp[j]=max(dp[j],dp[j-v[i-1]]+w[i-1]);//选i情况下的最大值,前提是合法}}cout<<dp[V]<<endl;//问题1的结果dp.resize(V+1);//重新复用一下dp表for(int j=1;j<V+1;j++) dp[j]=-1;for(int i=1;i<n+1;i++){for(int j=V;j>=v[i-1];j--){//选i且合法的情况if(dp[j-v[i-1]]!=-1) dp[j]=max(dp[j],dp[j-v[i-1]]+w[i-1]);//}}cout<<(dp[V]==-1?0:dp[V])<<endl;//问题2的结果
}

相关文章:

动态规划(6)——01背包问题

欢迎来到博主的专栏&#xff1a;算法解析 博主ID&#xff1a;代码小号 文章目录 牛客网——【模板】01背包题目解析题目1算法原理题目1题解代码。问题2算法原理问题2题解代码01背包问题的滚动数组优化 牛客网——【模板】01背包 题目解析 关于I/O相关的东西博主就不多赘述了&a…...

vulkanscenegraph显示倾斜模型(5.8)-视景器编译

前言 上一章深入剖析了Vulkan渲染过程中的核心组件VkPipeline&#xff0c;以及vsg中针对图形渲染管线的封装GraphicsPipeline&#xff0c;本章将继续深入探讨视景器准备过程中的最后一章视景器编译&#xff0c;并进一步深入vsg中显存的传输机制&#xff0c;即vsg::TransferTask…...

21 天 Python 计划:MySQL索引机制从基础到应用

文章目录 一、引言二、MySQL索引机制概述2.1 MySQL索引的创建方式2.2 查询、删除、指定索引2.3 数据库索引的本质 三、MySQL的索引分类3.1 数据结构层次3.2 字段数量层次3.3 功能逻辑层次3.4 存储方式层次3.5 索引分类小结 四、MySQL其他索引的创建使用方式4.1 唯一索引的创建与…...

强化学习系统在复杂推理模型中的应用——以AReaL系统为例

目录 强化学习系统在复杂推理模型中的应用——以AReaL系统为例 1. 背景与系统设计目标 2. AReaL系统的主要技术特点 2.1 强化学习策略的引入 2.2 优化训练流程 2.3 泛化能力的提升 3. 实际应用场景 4. 总结与展望 强化学习系统在复杂推理模型中的应用——以AReaL系统为例…...

关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格

以下是关于 微服务中服务注册与发现 的详细说明&#xff0c;涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格&#xff1a; 1. 服务注册与发现的核心概念 服务注册与发现是微服务架构的基础能力&#xff0c;主要解决以下问题&#xff1a; 服务注册&#xff1a;服…...

Tiny Cluster(1)——搭建树莓派小型计算集群

1 硬件说明 1.1 软硬件环境 k8s-master-0192.168.5.78Debian 12树莓派58G / 4核 / 64G TF卡 & 512G SSD控制节点k8s-worker-0192.168.5.48Debian 12树莓派4B4G / 4核 / 64G TF卡工作节点k8s-worker-1192.168.5.16Debian 11BTT-CB11G / 4核 / 64G TF卡工作节点 实现 K8s …...

【软考系统架构设计师】信息安全技术基础

1、 信息安全包括5个基本要素&#xff1a;机密性、完整性、可用性、可控性与可审查性。 机密性&#xff1a;确保信息不暴露给未授权的实体或进程。&#xff08;采取加密措施&#xff09; 完整性&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能够判断出数据是否已…...

CCF CSP 第35次(2024.09)(2_字符串变换_C++)(哈希表+getline)

CCF CSP 第35次&#xff08;2024.09&#xff09;&#xff08;2_字符串变换_C&#xff09; 解题思路&#xff1a;思路一&#xff08;哈希表getline&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;哈希表getline&#xff09;&#xff09;&#xff1a; …...

oracle怎么查看是否走了索引

SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14384cb24468; 这是查询语句&#xff0c;怎么看这个查询是否走了索引呢 EXPLAIN PLAN FOR SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14…...

八股系列(分布式与微服务)持续更新!

八股系列&#xff08;分布式与微服务&#xff09; 分布式系统的概念 分布式系统是由多个节点组成&#xff0c;节点之间通过网络协议传递数据&#xff0c;对外表现为一个统一的整体&#xff0c;一个节点可以是一台机器或一个进程&#xff1b;分布式系统的核心功能 资源共享&…...

19【动手学深度学习】卷积层

1. 从全连接到卷积 2. 图像卷积 3. 图形卷积代码 互相关操作 import torch from torch import nn from d2l import torch as d2ldef corr2d(X, K):"""计算2维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0]-h1, X.shape[1]-w 1))for …...

Linux基础9

一、日志管理 > 日志配置文件&#xff1a; > > ​ /var/log/messages #内核的消息以及各种服务的公共信息 > > ​ /var/log/dmesg #系统启动过程信息 > > ​ /var/log/cron #cron计划任务相关信息 > > ​ /var…...

[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略

目录 一、VC投资的本质是冒着不确定性风险进行买卖、生意&#xff0c;为了赚取高额回报 1、VC投资的核心本质 2、VC投资的运作机制 3、VC投资的风险与挑战 4、VC投资的底层逻辑 5、总结&#xff1a;VC投资的本质再定义 二、尽调核心逻辑 1、尽调的含义 2、尽调的逻辑方…...

Raymarching Textures In Depth

本节课最主要的就是学会hlsl中使用纹理采样 float4 color Texture2DSample(Texobj, TexobjSampler, uv); return color; 课程中的代码&#xff08;没有这张图我就没做&#xff09; 课程代码产生深度的原因是uv偏移&#xff0c;黑色区域会不断向左偏移&#xff0c;直到找到白色…...

条件变量condition_variable

条件变量 条件变量是一个对象&#xff0c;能够阻止调用线程&#xff0c;直到通知恢复。 std::condition_variable 是 C 标准库中的一个同步原语&#xff0c;它与互斥锁&#xff08;std::mutex&#xff09;配合使用&#xff0c;用于线程间的等待和通知机制。 成员函数 wait(…...

301.找出3位偶数

2094. 找出 3 位偶数 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<Integer> resnew ArrayList<>();List<Integer> linew ArrayList<>();public int[] findEvenNumbers(int[] digits) {Arrays.sort(digits);boolean[] numsnew boolea…...

改进神经风格迁移

改进神经风格迁移&#xff08;Neural Style Transfer, NST&#xff09;可以从多个方向入手&#xff0c;包括模型结构优化、损失函数设计、计算效率提升、应用场景扩展等。以下是一些关键的改进方向及具体方法&#xff1a; 1. 模型结构优化 &#xff08;1&#xff09;轻量化网络…...

零基础上手Python数据分析 (11):DataFrame 数据清洗与预处理 (上) - 搞定缺失值、重复值和异常值

写在前面 上一篇博客,我们学习了如何灵活地索引和选取 DataFrame 中的数据,这为我们深入操作数据打下了基础。 然而,在我们拿到原始数据,准备开始大展身手进行分析之前,往往需要先进行一个至关重要的步骤:数据清洗与预处理 (Data Cleaning and Preprocessing)。 “脏数…...

StateFlow 在 XML(传统View)和 Compose 中的统一数据流管理

在 Android 开发中&#xff0c;XML&#xff08;传统 View 系统&#xff09; 和 Jetpack Compose 的混合使用越来越常见。如何让它们共享同一份数据源&#xff0c;并实现自动 UI 更新&#xff1f; StateFlow 是 Kotlin 协程提供的一种响应式数据流&#xff0c;可以完美适配 XML …...

【JVM】运行时数据区域

文章目录 1. 程序计数器补充 2. 虚拟机栈2.1 栈帧1. 局部变量表2. 操作数栈3. 动态链接4. 方法返回地址补充 3. 本地方法栈4. 堆5. 方法区静态常量池&#xff08;Class常量池&#xff09;运行时常量池字符串常量池&#xff08;1&#xff09;位置变化&#xff08;2&#xff09;放…...

【场景应用5】深入探讨去噪扩散概率模型及训练推理过程

在这篇博客文章中,我们将深入探讨去噪扩散概率模型(Denoising Diffusion Probabilistic Models,简称DDPMs,扩散模型,基于评分的生成模型,或简单的自编码器),因为研究人员在(无条件或有条件的)图像/音频/视频生成任务中,已经取得了显著的成果。流行的例子(在撰写本文…...

TCP 如何在网络 “江湖” 立威建交?

一、特点&#xff1a; &#xff08;一&#xff09;面向连接 在进行数据传输之前&#xff0c;TCP 需要在发送方和接收方之间建立一条逻辑连接。这一过程类似于打电话&#xff0c;双方在通话前需要先拨号建立连接。建立连接的过程通过三次握手来完成&#xff0c;确保通信双方都…...

mysql:重置表自增字段序号

情况一&#xff1a;清空表数据后重置自增 ID 如果你希望清空表中的所有数据&#xff0c;并将自增 ID 重置为初始值&#xff08;通常为 1&#xff09; 1、truncate truncate table tb_dict; 2、delete 配合 alter 语句 delete from tb_dict; alter table tb_dict AUTO_INCR…...

【Code】《代码整洁之道》笔记-Chapter13-并发编程

第13章 并发编程 “对象是过程的抽象。线程是调度的抽象。” 编写整洁的并发程序很难——非常难&#xff0c;而编写在单线程中执行的代码却简单得多。编写表面上看似不错、深入进去却支离破碎的多线程代码也简单&#xff0c;但是系统一旦遭受压力&#xff0c;这种代码就扛不…...

TDengine 可靠性保障:数据持久化与容灾备份(一)

一、引言 在数字化浪潮席卷全球的当下&#xff0c;数据已成为企业和组织最为关键的资产之一。无论是互联网企业记录用户的行为数据&#xff0c;还是金融机构存储交易信息&#xff0c;又或是工业领域监测设备的运行状态&#xff0c;数据的可靠性直接关乎到业务的正常运转、决策…...

AWTK-MVVM 如何让多个View复用一个Model记录+关于app_conf的踩坑

前言 有这么一个业务&#xff0c;主界面点击应用窗口进入声纳显示界面&#xff0c;声纳显示界面再通过按钮进入菜单界面&#xff0c;菜单界面有很多关于该声纳显示界面的设置项&#xff0c;比如量程&#xff0c;增益&#xff0c;时间显示&#xff0c;亮度&#xff0c;对比度等…...

第四节:React Hooks进阶篇-useEffect依赖项为空数组[]与不写的区别

陷阱题&#xff1a;闭包问题、Stale Closure举例 一、依赖项为空数组[]与不写的核心区别 行为空数组[]不写依赖项执行时机仅在组件挂载时执行一次&#xff08;类似componentDidMount&#xff09;组件每次渲染后都执行&#xff08;类似componentDidUpdate&#xff09;更新触发…...

25级总分413数学一142专业124东南大学820考研经验电子信息通信工程,真题,大纲,参考书。

我是南京理工大学的本科生&#xff0c;25 考研一战东大&#xff0c;政治 69&#xff0c;英一 78&#xff0c;数一 142&#xff0c;专业课&#xff08;820&#xff09;124&#xff0c;总分 413。我从 3 月正式开始备考&#xff0c;专业课跟着无线电论坛jenny 老师进行学习&#…...

Docker Desktop磁盘镜像位置用途解析

在设置里面的资源中有个磁盘镜像位置的配置&#xff0c;这个目录默认位置是&#xff1a;C:\Users\haitao.luo\AppData\Local\Docker\wsl\disk&#xff0c;这里面对应的是一个docker_data.vhdx&#xff0c;虚拟磁盘文件&#xff0c;因为是在c盘上&#xff0c;所以可能后面下载镜…...

android display 笔记(十)surfaceflinger与HWC的关系

在 Android 图形系统中&#xff0c;SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件&#xff0c;共同负责屏幕内容的合成与显示。它们的关系可以用 “决策者与执行者” 来概括&#xff1a; 首先HWC中 DEVICE&#xff1a;指“显示设备硬件”&#xff08;…...

#MES系统运维问题分析思路

一套适用于90% MES运维现场问题的排查分析思维模型&#xff0c;叫做&#xff1a; &#x1f50d; MES系统问题分析七步法&#xff08;现场实战适用&#xff09; ✅ 第一步&#xff1a;明确问题现象&#xff08;What&#xff09; 问题要说清楚&#xff0c;“不能操作”这种模糊描…...

基于FPGA的六层电梯智能控制系统 矩阵键盘-数码管 上板仿真均验证通过

基于FPGA的六层电梯智能控制系统 前言一、整体方案二、软件设计总结 前言 本设计基于FPGA实现了一个完整的六层电梯智能控制系统&#xff0c;旨在解决传统电梯控制系统在别墅环境中存在的个性化控制不足、响应速度慢等问题。系统采用Verilog HDL语言编程&#xff0c;基于Cyclo…...

FPGA上实现SD卡连续多块读的命令

在FPGA上实现SD卡连续多块读的命令 CMD17命令一次只能读取1个块 CMD18命令一次可以连续读取多个块&#xff0c;直到停止命令CMD12 CMD18命令读的块数程序可任意设置 目录 前言 一、SD卡多块读命令CMD18 二、停止读命令CMD12 三、SD卡初始化SD卡连续块读操作的verilog代码 …...

AI 大语言模型 (LLM) 平台的整体概览与未来发展

&#x1f4cb; 分析报告&#xff1a;AI 大语言模型 (LLM) 平台的整体概览与未来发展 自动生成的结构化分析报告 &#x1f4bb; 整体概述&#xff1a;AI LLM 平台的市场现状与发展动力 随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;Large Language Models, L…...

【技术派部署篇】Windows本地部署技术派

一、技术派简介 技术派是一个采用 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈的社区系统&#xff0c;其 1.0 版已正式上线。该项目的技术栈按阶段集成引入&#xff0c;开发者可根据自身需求选择不同版本进行学习。 二、环…...

asm汇编语言源代码之-获取环境变量

提供1个子程序: 1. 读取环境变量 GETENVSTR 具体功能及参数描述如下 GETENVSTR PROC FAR ;IN: DSPSP SEG. ;   ES:BX -> ENV VAR NAME ;OUT: DS:DX -> ENV VAR VALUE; IF DX0FFFFH, NOT FOUND   ; more source code at http://www.ahjoe.com/source/srcdown.aspPU…...

消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)

概述 使用 CoreData 作为 App 持久存储“定海神针”的小伙伴们想必都知道&#xff0c;我们需要将耗时的数据库查询操作乖巧的放到后台线程中&#xff0c;以便让主线程负责的 UI 获得风驰电掣般地享受。 不过&#xff0c;如何将后台线程中查询获得的托管对象稳妥的传送至主线程…...

Python中如何用正则表达式精准匹配IP地址?

在网络编程和数据处理时&#xff0c;我们经常需要从文本中提取或验证IP地址。Python的正则表达式(re模块)是完成这个任务的利器。但你知道怎么写才能准确匹配各种合法的IP地址吗&#xff1f;今天我们就来详细探讨这个问题。 为什么需要IP正则表达式&#xff1f; 假设你正在分…...

初识华为防火墙

防火墙配置与应用 一、防火墙的基本概念 1&#xff0e;防火墙的网络区域&#xff08;一般认为三个区域&#xff1a;trust、DMZ、untrust&#xff09; &#xff08;1&#xff09;本地区域(安全级别 100&#xff0c;local)&#xff08;防火墙内部区域&#xff0c;一般不说明此…...

十二、C++速通秘籍—静态库,动态库

上一章节&#xff1a; 十一、C速通秘籍—多线程-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147055932?spm1001.2014.3001.5502 本章节代码&#xff1a; cpp2/library CuiQingCheng/cppstudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/cppst…...

我爱学算法之——滑动窗口攻克子数组和子串难题(下)

这几道题可以说是有一点难度的&#xff0c;但是掌握方法以后可以说非常简单了&#xff1b; 一、找到字符串中所有字母异位词 题目解析 题目给定了两个字符串s和p&#xff0c;让我们在s中找到p的异位词的字串&#xff0c;并且返回这些字串的索引 **异位词&#xff1a;**简单来说…...

leaflet 之 获取中国某个行政区的经纬度边界(latLngBounds)

思路 在json文件中获取下面的四个点 组成东北,西南两组 { “southwest”: { “lat”: 35.950, “lng”: 120.000 },//西南方 “northeast”: { “lat”: 36.200, “lng”: 120.300 }//东北方 } 最西点经度&#xff08;minLng&#xff09; 最东点经度&#xff08;maxLng&#x…...

鸢尾花分类的6种机器学习方法综合分析与实现

鸢尾花分类的6种机器学习方法综合分析与实现 首先我们来看一下对应的实验结果。 数据准备与环境配置 在开始机器学习项目前&#xff0c;首先需要准备编程环境和加载数据。以下代码导入必要的库并加载鸢尾花数据集&#xff1a; import numpy as np import pandas as pd impo…...

基于李永乐线性代数基础的行列式的起源于理解

起源于解方程组的过程 对于解一个二元方程组&#xff0c;很自然的会通过加减消元&#xff0c;变成下面这样 对于三元方程组&#xff0c;也是一样&#xff1a; 这一大长串&#xff0c;是A*x1b1这个形式时&#xff0c;A的值 人们为了方便记忆x未知数前这一大坨相乘后相加减的数…...

MacOs java环境配置+maven环境配置踩坑实录

oracl官网下载jdk 1.8的安装包 注意可能需要注册&#xff01;&#xff01;&#xff01; 下载链接&#xff1a;下载地址点击 注意晚上就不要下载了 报错400 &#xff01;&#xff01;&#xff01; 1.点击安装嘛 2.配置环境变量 export JAVA_HOME/Library/Java/Java…...

LeetCode 3272.统计好整数的数目:枚举+排列组合+哈希表

【LetMeFly】3272.统计好整数的数目&#xff1a;枚举排列组合哈希表 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-count-of-good-integers/ 给你两个 正 整数 n 和 k 。 如果一个整数 x 满足以下条件&#xff0c;那么它被称为 k 回文 整数 。 x 是一个…...

蓝桥杯嵌入式历年省赛客观题

一.第十五届客观题 第十四届省赛 十三届 十二届...

RFID 在制造业的深度应用与未来趋势

一、引言 制造业作为国民经济的核心支柱&#xff0c;正面临着全球供应链重构、个性化需求激增、成本压力加剧等多重挑战。RFID&#xff08;射频识别&#xff09;技术以其非接触式自动识别、数据实时传输、环境适应性强等特性&#xff0c;成为推动制造业数字化转型的关键引擎。…...

spring--声明式事务

声明式事务 1、回顾事务 要么都成功&#xff0c;要么都失败&#xff01; 事务在项目开发中&#xff0c;十分重要&#xff0c;涉及数据的一致性问题 确保完整性和一致性 事务ACID&#xff1a; 原子性&#xff1a;事务是原子性操作&#xff0c;由一系列动作组成&#xff0c;…...

java爬虫案例

以下是一个简单的Java爬虫案例&#xff0c;使用了 Jsoup 和 Apache HttpClient 两个常用的库来实现网页内容的爬取和解析。这个案例会演示如何获取网页的HTML内容、解析HTML并提取所需数据。 示例&#xff1a;使用Jsoup爬取网页内容 1. 添加依赖 在项目中添加以下依赖&#xff…...