随笔分类 -  算法

蜗牛般缓慢爬行的算法进程
摘要:编辑距离 例题 给定 n 个长度不超过 10 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。 对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。 每个对字符串进行的单个字符的插入、删除或替换算作一次操作。 输入格式 第一 阅读全文
posted @ 2022-02-28 12:33 ture? 阅读(29) 评论(0) 推荐(0) 编辑
摘要:最短编辑距离 题干 给定 n 个长度不超过 10 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。 对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。 每个对字符串进行的单个字符的插入、删除或替换算作一次操作。 输入格式 阅读全文
posted @ 2022-02-27 14:04 ture? 阅读(49) 评论(0) 推荐(0) 编辑
摘要:求最长公共子序列长度 题干 给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为 N 的字符串,表示字符串 A。 第三行包含一个长度为 M 的字符串,表示字符串 B。 字 阅读全文
posted @ 2022-02-26 16:45 ture? 阅读(67) 评论(0) 推荐(0) 编辑
摘要:二分法 分析 大神的视频讲解链接 常见的查找边界问题: 最不易出错的解法: 初始l、r设为数组边界两端分别往外扩展一个单位,这样可以保证数组长度只有1位或其它情况时不会陷入死循环。 伪代码: // 以数组int a[N]为例,实际数据所在下标为0~N-1 l = -1, r = N; while l 阅读全文
posted @ 2022-02-26 16:25 ture? 阅读(50) 评论(0) 推荐(0) 编辑
摘要:求最长子序列——贪心法 思路: 维护一个数组 stk,要求这个数组里的元素在数值上是严格递增的。 遍历每一个数,如果这个数比数组里的最后一个数更大,那么就将这个数插入数组的最后;反之,替换掉数组中第一个大于等于这个数的元素。 最后的答案就是数组中元素的个数。 分析: 外部循环遍历n个数,时间复杂度为 阅读全文
posted @ 2022-02-24 10:33 ture? 阅读(106) 评论(0) 推荐(0) 编辑
摘要:数字三角形 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。(下面排列看起来可能有点不准确) 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 借用最简单的动态规划的思想来考虑 阅读全文
posted @ 2022-02-07 22:41 ture? 阅读(49) 评论(0) 推荐(0) 编辑
摘要:分组背包问题 问题描述: 有 N 组物品和一个容量是 V 的背包。 每组物品有若干个,同一组内的物品最多只能选一个。 每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。 求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。 分析: f[i][j]表示只看前i 阅读全文
posted @ 2022-01-28 22:44 ture? 阅读(35) 评论(0) 推荐(0) 编辑
摘要:多重背包 II —— 二进制优化 核心思想:转换成0~1背包问题。———— 对个体拆分后全部打散,反正能够保证从全局上使得所有情况依然存在就可以了。 核心思想**(前提建议先把多重背包朴素版算法搞清楚)** 转换成0 ~ 1背包问题,对个体拆分后全部打散,反正能够保证从全局上使得所有情况依然存在就可 阅读全文
posted @ 2022-01-28 10:26 ture? 阅读(279) 评论(0) 推荐(0) 编辑
摘要:多重背包问题 I 问题描述: 有 N 种物品和一个容量是 V 的背包。 第 ii 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。 跟前面的背包问题解题思路差不多,相比较于完全背包问题多出的限制条件是这 阅读全文
posted @ 2022-01-24 22:31 ture? 阅读(104) 评论(0) 推荐(0) 编辑
摘要:完全背包问题 问题描述: 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。 第 i 种物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 动态规划解法: 设F[i][j]表示只看前i个物品,总体积是j的情况下 阅读全文
posted @ 2022-01-23 23:05 ture? 阅读(170) 评论(0) 推荐(0) 编辑
摘要:0~1背包 —— 动态规划 问题描述: 给定n个物品和一背包。物品i的体积vi,其价值为wi,背包的最大容量为V。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 动态规划解法: 设F[i][j]表示只看前i个物品,总体积是j的情况下,总价值是多少 result = max(F[n][0 阅读全文
posted @ 2022-01-21 22:25 ture? 阅读(41) 评论(0) 推荐(0) 编辑
摘要:0~1背包问题纯暴力解法 分析 选择物品放入背包时每个物品只有两种选择情况即放入与不放入,所以在n个物品的情况下采用最暴力手段解决时最坏时间复杂度应为2的n次方。 解决 假如物品数量为3,编号分别为1、2、3则情况无非如下8种(0表示不放入背包,1表示放入背包): 0 0 0 * 1 0 0 * 0 阅读全文
posted @ 2021-07-28 10:57 ture? 阅读(531) 评论(0) 推荐(0) 编辑
摘要:dfs全排列 阅读全文
posted @ 2021-07-27 22:58 ture? 阅读(88) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示