- 博客(93)
- 资源 (5)
- 收藏
- 关注
原创 MySQL窗口函数(分组内排序、筛选)
文章目录MySQL窗口函数(分组内排序、筛选)简介与GROUP BY区别窗口函数语法`partition_clause` 句法`order_by_clause` 句法`frame_clause` 句法MySQL窗口函数列表聚合函数 + over()排序函数 + over()ntile()函数 + over()first_value()函数 + over()lag()函数 + over()last_value()函数 + over()lead()函数 + over()nth_value()函数 + over(
2022-04-13 22:21:44 5645
原创 二分搜索几种写法分析
文章目录简介基本二分搜索例题方法一方法二总结查找左侧边界的二分搜索例题方法一注意要点方法二注意要点总结查找右侧边界的二分搜索例题方法一注意要点方法二注意要点简介二分搜索(英语:binary search),也叫折半搜索(英语:half-interval search),是一种在有序数组中查找特定元素的搜索算法。所以是用二分查找的前提是数组必须是有序的;平均时间复杂度为O(logn)O(log_n)O(logn).基本二分搜索基本的二分查找有两种写法,是根据查找的右边界取值来划分的。其取值不同实现细
2022-02-17 17:55:17 847
原创 滑动窗口算法精讲(Sliding Window Algorithm)
文章目录滑动窗口算法精讲(Sliding Window Algorithm)简介步骤及算法模板模板1模板2leetcode例题讲解入门级209. 长度最小的子数组思路:代码实现219. 存在重复元素 II思路代码实现220. 存在重复元素 III思路代码实现进阶级395. 至少有 K 个重复字符的最长子串思路代码实现经典题目438. 找到字符串中所有字母异位词 (一题三解)思路1:代码实现1思路2代码实现2思路3代码实现3其它练习题目滑动窗口算法精讲(Sliding Window Algorithm)简
2022-02-05 21:06:12 7079 1
原创 蓄水池抽样算法
蓄水池抽样算法问题引入给定一个数据流,数据流长度N很大,如何从中随机选取k个数据,并且要保证每个数据被抽取到的概率相等。注意:数据流长度N很大,内存无法加载全部数据简介水塘抽样是一种随机抽样算法,它能够在一个很大的集合中,抽取一部分样本,并保证每个样本的选取概率都是相等并随机的。有以下特点:选取集合可以非常大,甚至不知道边界每个样本的选取随机且概率相等时间复杂度较低,O(n),节省内存例题给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。见
2022-01-18 23:44:06 321
原创 Rabin-Karp 指纹字符串查找算法
Rabin-Karp 指纹字符串查找算法M.O.Rabin 和 R.A.Karp 发明了一种完全不同的基于散列的字符串查找算法。我们需要计算模式字符串的散列函数,然后用相同的散列函数计算文本中所有可能的 M 个字符的子字符串散列值并寻找匹配。如果找到了一个散列值和模式字符串相同的子字符串,那么再继续验证两者是否匹配。这个过程等价于将模式保存在一张散列表中,然后在文本的所有子字符串中进行查找。但不需要为散列表预留任何空间,因为它只会含有一个元素。根据这段描述直接实现的算法将会比暴力子字符串查找算法慢很多(因
2022-01-03 10:15:16 1430
原创 前缀树(trie)实现
目录简介性质算法思路插入字符串查找前缀代码实现实现类测试类测试结果参考文档简介前缀树(trie)又称字典树、单词查找树。它由字符串键中的所有字符构造而成,允许使用被查找键中的字符进行查找。它的英文单词 trie 来自于 E.Fredkin 在 1960 年玩的一个文字游戏,因为这个数据结构的作用是取出( retrieval)数据,但发音为 try 是为了避免与 tree 相混淆。性质和其它查找树一样,单词查找树也是由链接的结点所组成的数据结构,这些链接可能为空,也可能指向其他结点。每个结点都只可能有
2021-12-31 09:48:55 2361
原创 windows构建docker镜像报错:failed to create LLB definition: 403 Forbidden
前言使用docker build命令构建镜像报:“failed to solve with frontend dockerfile.v0: failed to create LLB definition: unexpected status code [manifests 18.04]: 403 Forbidden”,具体报错截图如下:解决方法它发生在构建过程中,它是 buildkit 中的一个错误,考虑到 buildkit 仍然不稳定。如果您在 Mac/Windows 上使用 Docker 桌面,
2021-11-05 19:21:12 14821 2
原创 Spring面向切面编程(介绍及使用)
文章目录Spring 面向切面编程AOP 概念AOP 代理@AspectJ 支持启用@AspectJ 支持声明一个切面声明一个切入点表达式标签(10种)1. execution标签2. within标签3. this4. targetwithin、this、target对比5. args6. @within7. @target8. @args9. @annotation10. bean切点表达式的组合声明通知@Before:前置通知JoinPoint:连接点信息@After:后置通知介绍特点@AfterRe
2021-08-10 14:14:34 1580 3
原创 leetcode877. 石子游戏(动态规划实现)
文章目录石子游戏解题思路状态方程初始化返回值代码实现石子游戏亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。示例:输入:[5,
2021-06-16 23:57:25 228
原创 分治系列-算法思想与模板
文章目录一、介绍二、原理与思想三、算法模板四、更多经典题目一、介绍 分治,顾名思义,分而治之。分治法(divide and conquer)也是一种解决问题的常用模式,分治法的设计思想是将无法着手解决的大问题分解成一系列规模较小的相同问题,然后逐个解决小问题,即所谓的分而治之。分治法产生的子问题与原始问题相同,只是规模减小,反复使用分治方法,可以使得子问题的规模不断减小,直到能够被直接求解为止。 分治法作为算法设计中一个古老的策略,在很多问题中得到了广泛的应用,比如最大、最小问题(例如在一堆形
2021-06-10 22:10:42 638
原创 回溯系列-含有重复元素的全排列问题
文章目录一、题目描述二、解题思路三、代码实现四、执行结果一、题目描述求含有重复元素序列的全排列。示例1:输入:1,1,3输出: 1 1 3 1 3 1 3 1 1 二、解题思路 回溯方法的思想及模板参考回溯系列-算法思想与模板,根据此算法的模板我们就可以解决此题。不重复元素的全排列参考我的这篇文章[回溯系列-全排列问题]做法相似。 对与其中一个排列解序列我们设为(a1,a2,…,an),所以我们需要填充所有位置1到n(n为序列的长度)。先考虑从位置1选择
2021-06-10 21:29:38 981
原创 分治系列-二叉搜索树的后序编列序列
一、题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树:示例1:输入: [2,5,4,7,8]输出: false示例2:输入: [2,5,4,8,7]输出: true二、解题思路后序遍历性质: 节点按照 [ 左子树 | 右子树 | 根节点 ] 排序。二叉搜索树性质:左子树节点 < 根节点 < 右子树节点 在二叉树的后序遍历序列中,最后一
2021-06-08 22:08:20 164
原创 分治系列-根据前序和中序遍历重建二叉树
一、题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例1:前序遍历:[3,5,7,8,10]中序遍历:[7,5,3,8,10]示例图如下:二、解题思路前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。 在二叉树的前序遍历序列中,第一个数字总是树的根节点的值。但在中序遍历序列中,根节点的值在序列的中间,左子树的节点的值位
2021-06-06 21:38:27 216 4
原创 回溯系列-数独游戏
文章目录一、数独游戏介绍二、游戏规则三、解题思想四、代码实现五、运行截图六、更多相关文章一、数独游戏介绍 数独游戏(SUDOKU)是一种数学智力拼图游戏,起源于18世纪末的瑞士,当时的瑞士数学家莱昂哈德·欧勒发明了“拉丁方块”游戏,但并没有受到人们的重视。直到20世纪70年代,美国杂志才以“数字拼图”(number place puzzles)游戏的名称将它重新推出,结果风靡一时。日本随后接受并推广了这种游戏,并且将它改名为“数独”,大致的意思是“独个的数字”或“只出现一次的数字”。数独游戏在日本非
2021-06-01 21:09:26 1439 1
原创 回溯系列-全排列问题
文章目录一、题目描述二、解题思路三、代码实现四、执行结果一、题目描述求1~n的全排列。示例1:输入:3输出: (1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1)二、解题思路 回溯方法的思想及模板参考回溯系列-算法思想与模板,根据此算法的模板我们就可以解决此题。 对{1,…,n}的全排列个数进行计数是生成这些置换的必要前提.对于置换(a1,a2,…,an)的第一个元素值来说,有n种不同的选项.
2021-05-30 20:48:29 237
原创 回溯系列-集合的子集
文章目录一、题目描述二、解题思路三、代码实现四、执行结果一、题目描述求集合的子集。示例1:输入:[1,2,3,4]输出: {1,2,3,4} {1,2,3} {1,2,4} {1,2} {1,3,4} {1,3} {1,4} {1} {2,3,4} {2,3} {2,4} {2} {3,4} {3} {4} {}二、解题思路 回溯方法的思想及模板参考回溯系列-算
2021-05-30 19:49:47 210
原创 回溯系列-算法思想与模板
文章目录一、原理与思想二、算法模板一、原理与思想 回溯是一种在搜索空间中对所有可能的排布(configuration)进行迭代遍历的系统性方案.这些排布可能表示了若干对象的所有安排(置换),或者构建若干元素所有可能的挑选方案(子集).还有其他一些情况,例如可能会要求你枚举图的所有生成树,或者两个顶点之间的所有路径,抑或是将顶点按照着色不同进行分类. 这些问题的共同点是我们必须让每个可能的排布恰好生成一次.要让排布不重不漏,则意味着我们必须定义一个具有条理性的生成次序。可将我们组合搜索所寻找的解
2021-05-29 16:11:31 251 1
原创 力扣1787题:使所有区间的异或结果为零-动态规划
文章目录一、题目描述二、解题思路1. 定义状态2. 定义状态转移方程3. 初始化4. 计算方式三、代码实现四、优化一、题目描述 给你一个整数数组 nums 和一个整数 k 。区间 [left, right](left <= right)的异或结果是对下标位于 left 和 right(包括 left 和 right )之间所有元素进行 XOR 运算的结果:nums[left] XOR nums[left+1] XOR … XOR nums[right] 。返回数组中要更改的最小元素数 ,以使
2021-05-26 22:25:19 187
原创 动态规划经典题目-最小权三角剖分
一、题目描述设A是顶点为1,2,…,n的凸多边形,可以用不在内部相交的n-3条对角线将A划分成三角形,如下图就是5边形的所有的划分方案.假设凸n边形的边及对角线的长度dij,都是给定的正整数,1≤i<j≤n.划分后三角形k的权值等于其周长,求具有最小权值的划分方案.设计一个动态规划算法求解这个问题,说明算法的时间复杂度.示例1:输入:d = [ [0,2,3,1,5,6], [2,0,3,4,8,6], [3,3,0,10,13,7], [1,4,10,0,12,
2021-05-24 23:52:25 1959
原创 leetcode664题:奇怪的打印机-动态规划
一、题目描述有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印由 同一个字符 组成的序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给你一个字符串 s ,你的任务是计算这个打印机打印它需要的最少打印次数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/strange-printer示例1:输入:s = "aaabbb"输出:2解释:首先打印 "aaa" 然后打印 "bbb"。示例2:输入
2021-05-24 22:31:01 323 1
原创 动态规划经典题目-数据压缩之图像压缩
一、题目描述 计算机中的图像由一系列像点构成,每个像点称为一个像素,图像分辨率越高,使用的像素就越多,例如Windows桌面的图片经常使用的设置是1024×768个,大概达到106量级.图像传输和视频处理有时在1秒钟内要处理几十帧图片,这些图片的像素就很可观了,因此图像处理常常需要大量的存储空间和高的处理速度,图像压缩问题就成了计算机科学技术中的重要研究课题之一. 以黑白图像的处理来说明图像压缩中的问题.每幅黑白图像由像点构成,每个像点具有灰度值,用0~255之间的整数表示.如果每个整数都用相同
2021-05-23 22:09:06 2422 1
原创 动态规划经典题目-数据压缩之文本压缩
一、题目描述 考虑如下数据压缩技术。我们有一个表存了m个文本串,每个长度至多为k。我们想对一个长为n的数据串D使用尽可能少的文本串来编码。例如,如果我们的表包含(“a”,“ba”,“abab", “b"), 且数据串为“bababbaababa" ,编码的最好方式是(“b”,“abab”, “ba” ,“abab”,“a”)一共计5个码字. 给出一个O(nmk)算法找出最优编码的码长。你可以假设每个文本串都可以基于该表至少给出一个编码。示例:输入:codes = ["a","ba","abab",
2021-05-23 21:31:47 451
原创 动态规划经典题目-矩阵链乘法
一、题目描述 给定n个矩阵{A1,A2,A3,…,An},其中,Ai和Ai+1(i=1,2,…,n-1)是可乘的。用括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同,找出一种加括号的方法,使得矩阵连乘的计算量最小。 设两个矩阵Mixj、Mjxp相乘运算次数则为i x j x p。示例: A1是M5x10的矩阵; A2是M5x100的矩阵; A3是M100x2的矩阵; 那么有两种加括号的方法: (1) (A1A2)A3; (2) A1(A2
2021-05-23 20:59:03 750
原创 动态规划经典题目-字符串切分
一、题目描述 某种字符串处理语言允许程序员将字符串分为两段。将一个长为n的字符串分为两段耗时n个单位,因为这种操作会涉及旧字符串的复制工作。一个程序员想将字符串分为若干段,他所采用的划分次序会影响到总的用时情况。例如,假设我们想将一个有20个字符的字符串在第3个、第8个和第10个位置之后切断。如果我们按从左到右的次序切分,那么第一次切分耗时20个单位,第二次切分耗时17个单位,第三次切分耗时12个单位,共计49步。如果我们按从右到左的次序切分,那么第一次切分耗时20个单位,第二次切分耗时10个单位,第
2021-05-23 18:22:00 774
原创 动态规划经典题目-字符串的编辑距离
一、题目描述 编辑距离(edit distance)— 我们把两个字符串的相似度定义为:将一个字符串转换成另外一个字符串时需要付出的代价。转换可以采用插入、删除和替换三种编辑方式,因此转换的代价就是对字符串的编辑次数。而编辑距离就是从一个字符串到另一个字符串的最少编辑次数。示例:以字符串“SNOWY”和“SUNNY”为例,下面是两种将“SNOWY”转换为“SUNNY”的方法转换方法1:S - N O W YS
2021-05-23 12:21:05 675 2
原创 动态规划经典题目-最长单调递增子序列
一、题目描述 最大单调子序列(Maximum Monotone Subsequence )-如果一个数列中第i个元素最少也和第i - 1个元素一样大,那么该序列单调递增。求一个字符串的最大单调递增子序列。示例:输入:s = "subsequence" 输出:beee二、解题思路1. 定义状态 设dp[i]表示字符串s的前i个字符的最大单调递增子序列的长度。2. 定义状态转移方程当s[i] >= s[k]时,有dp[i]=max(dp[k])+1dp[i] = max(dp
2021-05-23 11:16:35 701
原创 动态规划经典题目-最长公共子串
一、题目描述 求两个字符串s1和s2的最长公共子串。示例:输入:s1 = "photograph" s2 = "tomography"输出:ograph二、解题思路 其实本题就是字符串编辑距离的变种,字符串编辑距离会了,此题就会了。本题跟最长公共子序列也是非常像。详见动态规划经典题目-最长公共子序列1. 定义状态 设dp[i][j]表示字符串s1的前i个字符与字符串s2前j个字符的最长公共子序列。2. 定义状态转移方程当s1[i] == s2[j]时,有dp[i][j]=
2021-05-23 00:17:52 381
原创 动态规划经典题目-最长公共子序列
一、题目描述 求两个字符串s1和s2的最长公共子序列。 这里说明下,子序列是可以不连续字符按顺序组成的字符串。比如字符串democrat的其中一个子序列是dmat。而mdat就不是它的子序列,因为字符出现顺序不符合。示例:输入:s1 = "democrat" s2 = "republican"输出:eca二、解题思路 其实本题就是字符串编辑距离的变种,字符串编辑距离会了,此题就会了。就是字符串编辑距离去掉替换操作,就变成了此问题。1. 定义状态 设dp[i][j]表示字
2021-05-23 00:03:00 589
原创 动态规划经典题目-找零钱的方案数
一、题目描述 在美国,硬币按照面值1,5,10,25,50来铸造(单位为美分)。现在考虑按照面值{d1,…, dk}(单位为分)来铸造硬币的某个国家.我们想统计有多少种方式能找开n分钱,并记种数为C(n)。例如当所在国家硬币面值集合为{1,6,10}时,C(5)=1,C(6)到C(9)都是2,C(10)=3,C(12)=4。 给出一种高效算法来算出C(n)并分析该算法的时间/空间复杂度。(提示:通过计算C(n,d)来解决问题,C(n,d)是最高面值为d情况下能找开n分钱的方式种数.千万注意不要
2021-05-22 23:18:08 4217
原创 动态规划经典题目-找零钱的最少硬币数
一、题目描述 美国的硬币按照面值1, 5, 10, 25, 50来铸造(单位为美分)。现在考虑按照面值{d1,…, dk}(单位为分)来铸造硬币的某个国家。我们想要寻找一个算法能用最少数目的该国硬币来找开n分钱。给出一种高效算法能确定出用面值集合{d1,…, dk}找开n分钱所需的最少硬币数。 ———题目来源:《算法设计指南》示例:输入:coins = [2,3,5] total = 12输出:3解释:2 + 5 + 5最少需要3枚硬币找开12分
2021-05-22 22:38:34 1941
原创 LCA问题(离线tarjan算法,java代码实现)
一、问题描述有向无环图中的 LCA。给定一幅有向无环图和两个顶点 v 和 w,找出 v 和 w 的 LCA( Lowest Common Ancestor, 最近共同祖先)。如上图所示:LCA(5,6) = 3、LCA(5,7) = 1、LCA(5,1) = 1。二、Tarjan算法Tarjan是根据深度优先搜索和并查集实现的,Tarjan 算法的基本思路:任选一个节点为根节点,从根节点开始 遍历该点 v的所有子节点 w,并标记 w 已经被访问过 若 w还有子节点,返回步骤...
2021-02-14 21:16:33 611
原创 广度优先搜索算法(java实现)
一、算法描述广度优先搜索算法使用了一个队列来保存所有已经被标记过但其邻接表还未被检查过的顶点。先将起点加入队列,然后重复以下步骤直到队列为空:取队列中的下一个顶点 v 并标记它; 将与 v 相邻的所有未被标记过的顶点加入队列。bfs不是递归的。不像递归中隐式使用的栈,它显式地使用了一个队列。和深度优先搜索一样,它的结果也是一个数组 edgeTo[],也是一棵用父链接表示的根结点为 s 的树。它表示了 s 到每个与 s 连通的顶点的最短路径。性质对于从 s 可达的任意顶点 v,广度优先搜
2021-01-25 17:58:57 3269 1
原创 深度优先搜索应用1
一、问题描述在任意一幅连通图中都存在一个顶点,删去它(以及和它相连的所有边)不会影响到图的连通性,编写一个深度优先搜索的方法找出这样一个顶点。(来自算法4-4.1.10题)二、解决思路如果我们访问一个顶点v后,它的邻接点都已经被访问过了,那么这个顶点v删除它(以及和它相连的所有边)不会影响到图的连通性。三、代码实现本算法依赖上一篇文章所建立图,其图的创建代码参考上一篇文章无向图的创建(java实现)。代码实现如下:package graph.practise;import
2021-01-25 17:40:46 171
原创 深度优先算法实现二分图的检测(java实现)
一、问题描述给定一个无向图,要求检测该图是否是二分图?二、二分图定义和性质定义G=(V, E),其中G代表图,V代表这个图的所有顶点的集合,E代表这个图所有连线的集合,即是边集。现如今如果能将V这个顶点集分成两个互不相交的子集A、B,E这个边集内所有边的两个顶点分别属于A、B两个子集的话,我们就称这个图为二分图。如下图所示:举个例子,我们可以把集合A中的元素看作电影,把集合B中的元素看作演员,一个电影有多个演员,一个演员可能演多个电影性质二分图的一个等价条件是图中不存在
2021-01-24 16:51:59 419
原创 深度优先搜索实现无向图环的检测(java实现)
一、问题描述如何检测无向图中环?注意:本题中不考虑自环和平行环二、解决思路由于深度优先搜索性质,我们可以用它来检测环。假设当前访问顶点为v,访问v之前访问的顶点为prev,则prev为v的前驱节点。设w为v的后继节点,且w != prev并且w已被访问了,则可以判断图中存在环;假设第一访问的顶点的父节点为其本身,我们以图1 为例进行讲解:第一步:我们先访问0号顶点,此时v = 0 , prev = 0,w = 1。满足w != prev,但不满足w以访问,继续执行下一步;如下图:
2021-01-24 14:59:05 1674
原创 深度优先搜索算法及应用(java实现)
一、算法描述只需用一个递归方法来遍历所有顶点。在访问其中一个顶点时: 将它标记为已访问; 递归地访问它的所有没有被标记过的邻居顶点。 这种方法称为深度优先搜索( DFS)。可以使用一个 boolean 数组每个顶点是否被访问过。递归方法会标记给定的顶点并调用自己来访问该顶点的相邻顶点列表中所有没有被标记过的顶点。如果图是连通的,每个邻接链表中的元素都会被检查到。二、api定义 DepthFirstSearch private Graph grap...
2021-01-24 11:39:29 1312
原创 无向图的创建(java实现)
一、无向图的几种数据结构我们要面对的下一个图处理问题就是用哪种方式(数据结构)来表示图并实现这份 API,这包含以下两个要求:它必须为可能在应用中碰到的各种类型图预留足够的空间; 实现一定要块 邻接矩阵:我们可以使用V乘V的布尔矩阵。当顶点v和顶点w之间有相连接边时,定义v 行w列的元素为true,否则为false。当含有上百万个顶点的图是很常见的,个布尔值所需的空间是不能满足的。其次大部分图都是稀疏的,所以用邻接矩阵表示浪费空间。 邻接表:我们可以使用一个以顶点为索引的列表数组,其中的..
2021-01-23 21:38:39 3697
原创 LRU算法详解(java代码实现)
一、算法背景最近最少使用算法(LRU)是⼀种缓存淘汰策略,它是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法。该算法的思路是,发生缺页中断时,选择未使用时间最长的页面置换出去。从程序运行的原理来看,最近最少使用算法是比较接近理想的一种页面置换算法,这种算法既充分利用了内存中页面调用的历史信息,又正确反映了程序的局部问题。如下图所示:利用 LRU 算法对上例进行页面置换的结果如上图所示。当进程第一次对页面 2 进行访问时,由于页面 7 是最近最久未被访问的,故将它置换出去。...
2021-01-15 23:40:30 2461 4
原创 哲学家进餐问题(java模拟死锁及解决方案)
一、问题描述哲学家进餐问题是由 Dijkstra 提出并解决的,该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。如下图所示:二、代码模拟实现经分析可知,放在桌子上的筷子是临界资源,在一段时间内只允许一位哲学家使用。为了实现对筷子的互斥使用,可以用一个信号量表示一只筷子,由这五个信号量构成信
2021-01-13 16:11:37 4670 2
验证码生成.zip
2019-08-01
codeblocks版本(.a库文件链接版本).zip
2019-07-21
codeblocks版本(.h版本).zip
2019-07-21
VS2019版本(.lib库文件链接版本).zip
2019-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人