摘要: title: 0-1背包问题 date: 2022-05-11 11:02:33 tags: 算法 0-1背包问题 蛮力枚举法 依次列出所有可能情况 n表示有n个商品, C表示容量 其中颜色相同的是需要重复计算的 带备忘的递归 为了解决这个问题->需要大量计算重复的过程,这个时候我们可以引进一个“备 阅读全文
posted @ 2022-05-11 15:54 Classmate_Zhang 阅读(80) 评论(0) 推荐(0)
摘要: title: 钢条切割问题 date: 2022-05-10 20:42:52 tags: 动态规划 钢条切割问题 问题背景 现在有一个长度为10的钢条,可以零成本将其切割成多段长度更小的钢条,我们先要求出最大收益 钢条长度 0 1 2 3 4 5 6 7 8 9 10 价格p 0 1 5 8 9 阅读全文
posted @ 2022-05-11 08:44 Classmate_Zhang 阅读(257) 评论(0) 推荐(0)
摘要: title: 活动选择问题 date: 2022-05-09 14:40:50 tags: 算法 贪心策略 活动选择问题 活动选择问题 无权值 问题背景 有一个会场,需要安排几场活动 公司年会:10:00 - 19:00 婚礼宴请:11:00- 14:00 生日聚会:12:00 - 17:00 学术 阅读全文
posted @ 2022-05-10 19:28 Classmate_Zhang 阅读(192) 评论(0) 推荐(0)
摘要: title: 最长公共子序列 date: 2022-05-08 21:21:28 tags: 算法 动态规划 最小编辑距离 最小编辑距离 目的:找出串S经过多少次变化之后成为串T,要让这个次数变的最小 方法:插入,删除,替换 注意:这里我们只对串S进行操作 操作方法 删除方法: S删除最后一位来进行 阅读全文
posted @ 2022-05-08 22:31 Classmate_Zhang 阅读(50) 评论(0) 推荐(0)
摘要: 次序选择问题 分析 问题输入: 包含n个不同元素的数组A[1..n] 整数k(1<k <n) 问题输出: 返回整数k的下标 问题求解: 蛮力法: 我们先把数据进行排序,然后我们想要第几个元素我们就选取第几个元素, 这样的时间复杂度为n * log(n) ,但是这样我们不仅得到了第i小的元素,而且我们 阅读全文
posted @ 2022-05-06 18:11 Classmate_Zhang 阅读(183) 评论(0) 推荐(0)
摘要: 逆序对(分治法) 逆序对的含义 什么是逆序对? 例如上面这个表格第一行是数组序号,第二行是数组元素 当序号小的数组元素值大于序号大的数组元素值的时候称这两个数为逆序对 例如: (4,3)(4,5)就是逆序对 枚举法 我们通过两层for循环来遍历这个数组,挨个寻找到所有的逆序对 分治法 我们把数组分为 阅读全文
posted @ 2022-05-04 16:51 Classmate_Zhang 阅读(576) 评论(0) 推荐(0)
摘要: 最大公共子数组问题(分治法) 原理: 采用二分法,分别找出左边数组的最大值,右边数组的最大值,再找出带有中间元素的最大值 S1:数组X[1,n/2]中的最大值 S2:数组X[n/2+1, n]的最大值 S3:包含中间元素的最大值 算法实例: 分解: 归并: 代码: ''' 最大子数组问题(分治法) 阅读全文
posted @ 2022-05-03 19:18 Classmate_Zhang 阅读(85) 评论(0) 推荐(0)
摘要: 最长公共子序列问题(动态规划) 给定两个序列X和Y: 其公共序列为: 这里我们要找出它的最长子序列,由上面的情况得出最长的公共自序列长度为4 为BCAB 如果我们采用枚举法的话,有如下这种情况: 我们再次观察一下这个公共自序列: 我们发现长一点的数组依靠于短一点的数组:这时候可能会出现最优子结构和重 阅读全文
posted @ 2022-05-02 21:34 Classmate_Zhang 阅读(87) 评论(0) 推荐(0)
摘要: 硬币收集问题(动态规划) 问题: (硬币收集问题)在n*m格木板中放置一些硬币,每一个格子上最多放置一个硬币。在木板的左上方,一个机器人需要收集尽可能多的硬币,并把他们带到右下角的单元格。每一步,机器人可以从当前位置向右或向下移动一格,当遇到一个有硬币的单元格时,就会将该硬币收集起来。设计一个算法, 阅读全文
posted @ 2022-05-02 21:04 Classmate_Zhang 阅读(494) 评论(0) 推荐(0)
摘要: 大整数乘法 大整数乘法采用分治法来解决这个问题:先把大整数分为两部分 A和B 例如123456789 = 12345 * \(10^4\) + 6789; 其中x和y不一定都是n为。这样X和Y的乘积: XY = (A * \(10^{0.5n}\) + B)(C * \(10^{0.5m}\) + 阅读全文
posted @ 2022-04-29 21:29 Classmate_Zhang 阅读(1025) 评论(1) 推荐(0)