02 2022 档案
摘要:编辑距离 例题 给定 n 个长度不超过 10 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。 对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。 每个对字符串进行的单个字符的插入、删除或替换算作一次操作。 输入格式 第一
阅读全文
摘要:最短编辑距离 题干 给定 n 个长度不超过 10 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。 对于每次询问,请你求出给定的 n 个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。 每个对字符串进行的单个字符的插入、删除或替换算作一次操作。 输入格式
阅读全文
摘要:求最长公共子序列长度 题干 给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为 N 的字符串,表示字符串 A。 第三行包含一个长度为 M 的字符串,表示字符串 B。 字
阅读全文
摘要:二分法 分析 大神的视频讲解链接 常见的查找边界问题: 最不易出错的解法: 初始l、r设为数组边界两端分别往外扩展一个单位,这样可以保证数组长度只有1位或其它情况时不会陷入死循环。 伪代码: // 以数组int a[N]为例,实际数据所在下标为0~N-1 l = -1, r = N; while l
阅读全文
摘要:求最长子序列——贪心法 思路: 维护一个数组 stk,要求这个数组里的元素在数值上是严格递增的。 遍历每一个数,如果这个数比数组里的最后一个数更大,那么就将这个数插入数组的最后;反之,替换掉数组中第一个大于等于这个数的元素。 最后的答案就是数组中元素的个数。 分析: 外部循环遍历n个数,时间复杂度为
阅读全文
摘要:废话不多说,代码如下: #include<bits/stdc++.h> using namespace std; const int N = 1010; int a[N], f[N]; int main(){ int n; scanf("%d", &n); for(int i = 1; i <= n
阅读全文
摘要:数字三角形 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。(下面排列看起来可能有点不准确) 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 借用最简单的动态规划的思想来考虑
阅读全文