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

简单多状态DP问题

这里写目录标题

  • 什么是多状态DP
  • 解决多状态DP问题应该怎么做?
  • 关于多状态DP问题的几道题
    • 1.按摩师
    • 2.打家劫舍Ⅱ
    • 3.删除并获得点数
    • 4.粉刷房子
    • 5.买卖股票的最佳时期含手冷冻期
  • 总结

在这里插入图片描述

什么是多状态DP

多状态动态规划(Multi-State Dynamic Programming, Multi-State DP)问题是动态规划(DP)领域中的一个高级概念,涉及到在算法设计中引入多个状态来描述和解决复杂问题。与传统的单状态DP问题相比,多状态DP问题能够处理更多维度的状态信息,以应对更复杂的决策过程和状态转移关系。

以下是对多状态DP问题的详细介绍,包括定义、特点、常见应用场景和解决方法:

  • 定义
    多状态DP问题是指在动态规划算法中,引入了多个状态变量来描述一个问题的状态空间,并在这些状态之间进行转移来优化目标函数。每个状态变量通常代表了问题的一种不同的维度或特征,共同影响最终的决策过程。

简单定义:
在多状态DP问题中,我们使用一个或多个状态变量来描述问题的当前状态,并通过状态转移方程来找到从初始状态到目标状态的最优解。

  • 特点
    状态空间多维:与单状态DP不同,多状态DP问题中包含多个状态变量,每个状态变量可以是一个离散的值或者一个连续的范围。
    状态转移复杂:状态之间的转移关系可能更加复杂,需要同时考虑多个维度的变化。
    优化目标:目标通常是最小化或最大化一个函数,这个函数依赖于多个状态变量的组合。
  • 常见应用场景
    路径规划:如在地图上寻找从起点到终点的最短路径时,可以使用多个状态来描述不同的交通模式、时间限制等。
    资源分配:如在生产计划中,考虑生产任务的时间、资源消耗、设备状态等多个因素来优化生产计划。
    游戏设计:如在游戏中模拟复杂的状态变化,如角色的技能、装备状态、关卡进展等。
    网络优化:如在网络流问题中,考虑多种流量限制、路由选择等因素来优化网络流量分配。
  • 常见问题类型
    以下是一些典型的多状态DP问题示例:
    背包问题的扩展:如多维背包问题,其中不仅需要考虑物品的重量和价值,还需要考虑物品的其他特性(例如容量、数量限制等)。
    序列比对:如生物信息学中的序列比对问题,涉及对比多个序列的不同状态(如基因序列的匹配和变异)。
    多阶段决策问题:如多阶段投资决策,其中每个阶段的决策会影响后续阶段的状态。

解决多状态DP问题应该怎么做?

解决方法
解决多状态DP问题通常包括以下几个步骤:

  1. 定义状态变量:确定问题中的所有状态变量及其可能的取值范围。
  2. 构建状态转移方程:描述从一个状态转移到另一个状态的规则,通常包括状态之间的转移条件和代价。
  3. 设定初始状态和目标状态:确定动态规划的起始状态和目标状态,以及需要优化的目标函数。
  4. 编写DP递推公式:根据状态转移方程编写DP算法的递推公式。
  5. 实现DP算法:使用编程语言实现DP算法,并进行优化以提高算法的效率。

关于多状态DP问题的几道题

1.按摩师

题目链接
问题:

在这里插入图片描述

样例输出和输入:

在这里插入图片描述

这道题题意很简单一个按摩师,可以接收源源不断的预约请求,但是有一点他的预约请求不能在相邻的两天,意思就是我们看示例1,我们如果接受了1,那么就不能接受2,但是 可以接收3,3是可接受,但是不是一定要接受,最后让我们求预约的最长的时长的总和。
算法原理
状态表示:dp[i]表示到达i位置的最长预约时长。
状态转移方程 :这里我们想,到达i位置我们是不是有两种子状态,一种是预约,一种是不预约,如果预约话前一个i-1就不能预约,因为相邻的两个不能同时预约,所以我们将预约这种状态定义为f[i],将不预约这种状态定义为g[i],这里表示预约和不预约的最长预约时间。
所以这里第一种情况:当接受i位置的预约时,我们就不能接受i-1位置的预约,则f[i]可以表示为:f[i]=g[i-1]+nums[i]
第二种情况:当不接受i位置的值的时候,i-1位置可以选,可以不选,所以这里求选和不选的最大值,g[i]=max(g[i-1],f[i-1])
代码展示:

class Solution {
public:int massage(vector<int>& nums) {if(nums.size()==0){return 0;}//讨论两种情况,选或者不选int n = nums.size();vector<int> f(n), g(n);//初始化f[0] = nums[0], g[0] = 0;for (int i = 1;i < n;i++){f[i] = g[i - 1] + nums[i];g[i] = max(g[i - 1], f[i - 1]);}return max(g[n - 1], f[n - 1]);}
};

运行结果:
在这里插入图片描述

2.打家劫舍Ⅱ

题目链接
问题:

在这里插入图片描述

样例输出和输入:

在这里插入图片描述

这道题讲的是一个小偷,他要偷东西,但是不能偷相邻两个房间的东西,因为偷相邻两个房间的东西会触发报警器,还有一个要求就是不能同时偷头尾两个位置的东西,然后数组中的值代表房间的价值。最后让我们求可以偷到的最高价值。
算法原理:

这道题其实和打家劫舍1一样,只需要多一个判断,判断第一个位置是否偷,如果第一个位置偷,则第二个位置不能偷,如果 第一个位置不偷,则第二个位置可以偷 也可以不偷。
然后对可以偷的部分来一次打家劫舍1就可以了。
代码展示:

class Solution {
public:int rob(vector<int>& nums) {int n=nums.size();//三种情况当中偷最大的if(n==1){return nums[0];}if(n==2){return max(nums[0],nums[1]);}if(n==3){return max(max(nums[0],nums[1]),nums[2]);}//如果选第一个位置vector<int> f1(n),g1(n);f1[2]=nums[0]+nums[2],g1[2]=nums[0];for(int i=3;i<n-1;i++){f1[i]=g1[i-1]+nums[i];g1[i]=max(g1[i-1],f1[i-1]);}vector<int> f2(n),g2(n);f2[1]=nums[1],g2[1]=0;for(int i=2;i<n;i++){f2[i]=g2[i-1]+nums[i];g2[i]=max(g2[i-1],f2[i-1]);}return max(max(f1[n-2],g1[n-2]),max(g2[n-1],f2[n-1]));}
};

运行结果:
在这里插入图片描述

3.删除并获得点数

题目链接
问题:

在这里插入图片描述

样例输出和输入:

在这里插入图片描述

这道题让我们求的是最大点数,我们先看第一个例子,如果我们选了3,我们则不能选4和2,因为4和2不满足要求。如果我们选择4,我们则不能选择3但是我们可以选择2,这样最大的点数就是6
算法原理:
先对数组进行排序,升序数组利于我们跳过,然后再创建一个辅助数组,辅助数组的大小是原数组中最大的那个数加1,这个辅助数组的用途就是 存数组中的所有的数,如果 有相同的数则相加存起来,如果没有的话,则初始化为0.
状态表示:dp[i]表示i位置的当前获得的最大点数。。
状态转移方程:这里到达i位置的时候有两种情况,选或者不选,所以我们又需要两种状态来表示,这里选f[i],不选g[i],这里如果我们选第i个位置则前后位置都不能选则f[i]=g[i-1]+arr[i]如果我们不选i位置,则i-1位置可以选也可以不选,就是求选和不选的最大值:g[i]=max(g[i-1],f[i-1])

代码展示:

class Solution {
public:int deleteAndEarn(vector<int>& nums) {sort(nums.begin(), nums.end());int n = nums.size();vector<int> arr(nums[n - 1]+1);for (int i = 0;i < nums.size();i++){arr[nums[i]] += nums[i];}vector<int> f(arr.size()), g(arr.size());f[0] = arr[0], g[0] = 0;//f[0]=2,g[0]=0for (int i = 1;i < arr.size();i++){f[i] = g[i - 1] + arr[i];g[i] = max(g[i - 1], f[i - 1]);}return max(g[arr.size() - 1], f[arr.size() - 1]);}
};

运行结果:
在这里插入图片描述

4.粉刷房子

题目链接
问题:

在这里插入图片描述

样例输出和输入:

在这里插入图片描述

这道题首先要读懂题,这道题给出二维数组costs[i][j],i表示有多少个房子,然后j表示三种颜色,三种颜色分别是红蓝绿,但是这三种颜色 不能涂在相邻两个格子中,最后让我们求最小的花费
算法原理:
状态表示:dp[i]表示图到第i个房间的最小的花费
状态转移方程:这里由于涉及到三种颜色,这三种颜色分别是三种状态,所以这里我们开辟一个二维数组,这个二维数组的大小是n*3,0表示红色,1表示蓝色,2表示绿色。这里当我们第i个房间,这里我们先对红色进行讨论,由于第n个房间图了红色,所以我们的前一个房间就不能图红色,就只能在蓝色和绿色中选一个颜色,所以这里的最小花费应该是i-1的蓝色和绿色的最小花费中的最小的一个再加上当前位置的红色的最小花费:dp[i][0]=min(dp[i-1][1],dp[i-1][2])+costs[i][0]
其余的也一样:dp[i][1]=min(dp[i-1][0],dp[i-1][2])+costs[i][1],dp[i][2]=dp[i-1][1]+dp[i-1][0])+costs[i][2]

代码展示:

class Solution {
public:int minCost(vector<vector<int>>& costs) {int m = costs.size();int n = costs[0].size();vector<vector<int>> dp(m, vector<int>(n, 0));dp[0][0] = costs[0][0], dp[0][1] = costs[0][1], dp[0][2] = costs[0][2];for (int i = 1;i < m;i++){dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + costs[i][0];dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + costs[i][1];dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + costs[i][2];}return min(min(dp[m - 1][0], dp[m - 1][1]), dp[m - 1][2]);}
};

运行结果:
在这里插入图片描述

5.买卖股票的最佳时期含手冷冻期

题目链接
问题:

在这里插入图片描述

样例输出和输入:

在这里插入图片描述

这道题要我们求是最大的股受益,第一个示例,如果我们买入第一个股票在2的时候卖出则就不能在在3时买入,因为卖出的往后一天处于冷冻期,所以这里我们不能买入股票,冷冻期一过,我们就可以买入股票,我们在0的时候买入一支股票,然后在2的时候卖出,则最大受益就是3.
算法原理:
状态表示:dp[i]表示到达当前位置时的最大利润
状态转移方程:当我们到达i位置时,我们有三种状态,第一种状态是买入(持有股票) ,第二种状态是卖出(未持有股票),第三种状态是冷冻期(冷冻期,不能购买股票)。这三种状态我们分别用0,1,2表示,所以这里我们就可以用一个二维DP表来表示这个dp模型。
在这里插入图片描述
根据上图,我们可以得出简单的状态转移方程,dp[i][0]=max(dp[i-1][1]-prices[i],dp[i-1][0]]),dp[i][0]=max(dp[i-1][2],dp[i--1][1],dp[i][2]=dp[i-1][0]+prices[i]
代码展示:

class Solution {
public:int maxProfit(vector<int>& prices) {int n = prices.size();vector<vector<int>> dp(n, vector<int>(3, 0));//0买入状态,1可交易状态,2冷冻期dp[0][0] = -prices[0], dp[0][1] = 0, dp[0][2] = 0;for (int i = 1;i < n;i++){dp[i][0] = max(dp[i - 1][1] - prices[i], dp[i - 1][0]);dp[i][1] = max(dp[i - 1][2], dp[i - 1][1]);dp[i][2] = dp[i - 1][0] + prices[i];}//如果最后一次交易手里还剩有股票,那么肯定不是最大的利润return max(dp[n - 1][1], dp[n - 1][2]);} 
};

运行结果:
在这里插入图片描述

总结

在本文中,我们深入探讨了多状态动态规划(DP)问题的核心概念、应用场景和解法技巧。通过分析多状态DP问题的基本结构和挑战,我们不仅回顾了经典的动态规划方法,还揭示了如何在复杂的问题中引入多个状态来实现高效求解。

从具体的算法设计到实际应用案例,我们讨论了如何构建状态转移方程、优化空间复杂度以及处理状态之间的依赖关系。这些高级技巧不仅帮助我们解决了特定的多状态DP问题,也为应对未来更为复杂的算法问题奠定了坚实的基础。

多状态DP不仅是解决动态规划问题的有力工具,更是我们在算法设计中应对多维复杂性的重要思路。通过对这一领域的深入了解,我们可以更好地应对实际问题中的挑战,并在算法竞赛、数据分析等领域中取得突破性进展。

希望本文的讨论能够激发你对多状态动态规划问题的兴趣,鼓励你进一步探索这一领域的高级技巧与创新方法。算法的世界充满了无限可能,而多状态DP问题则是我们探索这片领域的一把重要钥匙。

感谢你的阅读,希望你能从中获得新的启发与收获!

相关文章:

简单多状态DP问题

这里写目录标题 什么是多状态DP解决多状态DP问题应该怎么做&#xff1f;关于多状态DP问题的几道题1.按摩师2.打家劫舍Ⅱ3.删除并获得点数4.粉刷房子5.买卖股票的最佳时期含手冷冻期 总结 什么是多状态DP 多状态动态规划&#xff08;Multi-State Dynamic Programming, Multi-St…...

cpu,缓存,辅存,主存之间的关系及特点

关系图 示意图&#xff1a; ------------------- | CPU | | ------------- | | | 寄存器 | | | ------------- | | | L1缓存 | | | ------------- | | | L2缓存 | | | ------------- | | | L3缓存 | | | ------------- | ----…...

【每日刷题】Day77

【每日刷题】Day77 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCR 159. 库存管理 III - 力扣&#xff08;LeetCode&#xff09; 2. LCR 075. 数组的相对排序 - 力…...

chrome-base源码分析(1)macros模块

Chrome-base源码分析(2)之Macros模块 Author&#xff1a;Once Day Date&#xff1a;2024年6月29日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客 参考文档: macros - Chromium Code SearchChrome base 库详解&#xff1a;工…...

玩转springboot之springboot定制嵌入式的servlet

springboot定制嵌入式的servlet容器 修改容器配置 有两种方式可以修改容器的配置 可以直接在配置文件中修改和server有关的配置 server.port8081 server.tomcat.uri-encodingUTF-8//通用的Servlet容器设置 server.xxx //指定Tomcat的设置 server.tomcat.xxx编写一个EmbeddedSer…...

dell服务器RAID5磁盘阵列出现故障的解决过程二——热备盘制作与坏盘替换过程

目录 背景方案概念全局热备&#xff08;Global Hot Spare&#xff09;&#xff1a;独立热备&#xff08;Dedicated Hot Spare&#xff09;&#xff1a; 过程8号制作成热备清除配置制作独立热备热备顶替坏盘直接rebuild 更换2号盘2号热备 注意注意事项foreign状态要先清除配置 背…...

Elasticsearch开启认证|为ES设置账号密码|ES账号密码设置|ES单机开启认证|ES集群开启认证

文章目录 前言单节点模式开启认证生成节点证书修改ES配置文件为内置账号添加密码Kibana修改配置验证 ES集群开启认证验证 前言 ES安装完成并运行&#xff0c;默认情况下是允许任何用户访问的&#xff0c;这样并不安全&#xff0c;可以为ES开启认证&#xff0c;设置账号密码。 …...

Excel 数据筛选难题解决

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…...

Web实时通信的学习之旅:WebSocket入门指南及示例演示

文章目录 WebSocket的特点1、工作原理2、特点3、WebSocket 协议介绍4、安全性 WebSocket的使用一、服务端1、创建实例&#xff1a;创建一个webScoket实例对象1.1、WebSocket.Server(options[&#xff0c;callback])方法中options对象所支持的参数1.2、同样也有一个加密的 wss:/…...

分治精炼宝库-----快速排序运用(⌯꒪꒫꒪)੭

目录 一.基本概念: 一.颜色分类&#xff1a; 二.排序数组&#xff1a; 三.数组中的第k个最大元素&#xff1a; 解法一&#xff1a;快速选择算法 解法二&#xff1a;简单粗暴优先级队列 四.库存管理Ⅲ&#xff1a; 解法一&#xff1a;快速选择 解法二&#xff1a;简单粗…...

快速修复mfc100u.dll丢失解决方案

相连文章&#xff1a;SecureCRT的安装破解 [详细过程2024] 有小伙伴向我反馈在打开SecureFX注册机之后显示【mfc100u.dll找不到】重装之后也没有用&#xff0c;这个是因为Microsoft Visual C的运行时组件和库出现了错误&#xff0c;直接选择重新安装就可以 出现这种情况的原因…...

【C++深度探索】继承机制详解(一)

hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1…...

力扣第218题“天际线问题”

在本篇文章中&#xff0c;我们将详细解读力扣第218题“天际线问题”。通过学习本篇文章&#xff0c;读者将掌握如何使用扫描线算法和堆来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力扣第…...

帝国cms未审核文章可视化预览效果

有时候为了让编辑更加清楚的看到别人审核之后的效果&#xff0c;同时文章有需要下一级审核才能在前端展示出来&#xff0c;今天就来展示一个未审核文章预览审核后的效果 这次给某出版社开发的时候&#xff0c;他们需要实现编辑能够预览自己发布之后的审核效果&#xff0c;所以就…...

医院管理系统带万字文档医院预约挂号管理系统基于spingboot和vue的前后端分离java项目java课程设计java毕业设计

文章目录 仓库管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 仓库管理系统 一、项目演示 医院管理系统 二、项目介绍 基于springbootvue的前后端分离医院管…...

爬虫技术在物联网数据采集中的应用

爬虫技术在物联网数据采集中的应用案例主要包括以下几个方面&#xff1a; 电商平台数据采集&#xff1a;例如&#xff0c;使用Python编写的网络爬虫可以用于爬取京东网页相关数据&#xff0c;如品牌、标题、价格、店铺等&#xff0c;并进行数据处理及可视化展示。这种方法不仅可…...

spring boot初始化的几个总结

spring intializr File->New->Project 注意&#xff1a;Spring Initializer中 Java版本选择模块已经不支持1.8了。 Spring Boot 3.x要求 Java最低版本为17&#xff0c; 最新的SpringBoot版本已经要求Java22了 所以&#xff0c;你可以升级Java版本&#xff0c;使用Spri…...

springcloud第4季 seata报could not find any implementation for class

一 问题说明 1.1 描述 在使用seata2.0alibaba-cloud 2022.0.0.0-RC2nacos 2.2.3 模拟下订单分布式事务场景&#xff0c;出现如下问题&#xff1a;java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 查看服务端&#xff1a;java.util.ServiceCo…...

IT之家最新科技热点

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…...

对象实例化过程

目录 一、Java对象实例化在JVM中的过程&#xff1a; 类加载与初始化 分配内存 初始化对象内存 设置对象头 执行初始化方法 构造方法执行 二、对象的创建过程 一、Java对象实例化在JVM中的过程&#xff1a; 类加载与初始化&#xff1a; 当JVM需要实例化一个对象时&#xff0c;它…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...