记忆化搜索
糖琴心
这个作者很懒,什么都没留下…
展开
-
leetcode 72 编辑距离:另一种dp table的查找方式
思路定义dp[i][j]为word1的前i个字符和word2的前j个字符相同需要的最少操作也就是说在递归的时候是从后面往前面递归的。为什么会这么想首先,转移方程是好写的。但是实现的过程是需要细节的。首先是basecase。经过了股票问题的思考后。在这里,当i<0或者j<0的情况,很容易返回另一个的对应情况。这个没什么好说的。关键是构建一个能够查找结果的表。我的创新这里使用...原创 2020-04-15 12:51:59 · 249 阅读 · 0 评论 -
leetcode10+leetcode 44 正则匹配题型总结
正则匹配题型总结这两道题目其实都是属于匹配类型的题目,都有一个‘*’表示可以任意匹配多个字符,而都有一个’.‘表示可以匹配单个字符。比较好想的递归思路:递归思路主要有2种,一种是从前向后匹配,一种是从后往前匹配。多数时候两种都可以,我这里主要用的是从前向后匹配,所以我定义的dp[i][j]为s的第i个字符之后和p的第j个字符之后可以互相匹配上的概率。这样的话逻辑就比较清晰了,初始化dp[i...原创 2020-04-06 21:53:03 · 177 阅读 · 0 评论 -
dfs搜索框架整理
在对dfs的搜索框架进行debug的时候,发现每次出现的错误总是很类似的,这里对其进行整理一下。总体思想:dfs的时候,已进入函数体,有2种情况:1 一种是当前已经包含了当前搜索的点,这个时候不需要在函数内部进行标记,只要在遍历的时候进行标记即可。2 另外一种情况是当前还没有访问当前搜索的点,那么这个时候就要先判断是否越界,然后访问当前的点,并且进行标记,然后再进行结果剪枝,再进行搜索。...原创 2020-03-31 12:59:51 · 144 阅读 · 0 评论 -
搜索EX(1):P1120 小木棍 [数据加强版]——各种剪枝技巧与最优化剪枝框架
输入输出样例输入 #1复制95 2 1 5 2 1 5 2 1输出 #1复制6暴力dfs代码#include<iostream>#include<algorithm>#define maxsize 100using namespace std;int n;int rod[maxsize];int used[maxsize];int maxle...原创 2019-11-08 19:14:40 · 190 阅读 · 0 评论 -
技巧性搜索阶段总结
(1) P1118 数字三角形——暴力dfs->找规律+剪枝https://blog.csdn.net/qq_35299223/article/details/102897256这题的加速主要是求和的过程使用了杨辉三角进行加速,但是除了这一处的加速之外,还有一个就是增加了dfs最大最小值dfs剪枝。(2) P1433 吃奶酪——求最大最小值常用的dfs剪枝方法https://blog...原创 2019-11-07 16:59:42 · 148 阅读 · 0 评论 -
记忆化搜索(4):P1074 靶形数独——有优先顺序的dfs
P1074 靶形数独输出格式输出共 11 行。输出可以得到的靶形数独的最高分数。如果这个数独无解,则输出整数-1−1。输入输出样例输入 #1复制7 0 0 9 0 0 0 0 1 1 0 0 0 0 5 9 0 0 0 0 0 2 0 0 0 8 0 0 0 5 0 2 0 0 0 3 0 0 0 0 0 0 6 4 8 4 1 3 0 0 0 0 0 0 0 0 7 0...原创 2019-11-07 16:26:48 · 189 阅读 · 0 评论 -
记忆化搜索(3):P1433 吃奶酪——求最大最小值常用的dfs剪枝方法
输入输出样例输入 #1复制41 11 -1-1 1-1 -1输出 #1复制7.41总结目录1 本题搜索思路2 本题剪枝思路1 本题搜索思路这题搜索就是典型的dfs搜索,并且使用回溯记录哪些点是访问过的。在求距离的时候需要知道当前在第几个点,这样才能继续往下求距离。当全部点访问完之后,就“走到尽头”了,此时比较一下当前的sum和minres的大小就可以知道哪个是最小值了...原创 2019-11-06 10:59:28 · 296 阅读 · 1 评论 -
记忆化搜索(2)P1434 [SHOI2002]滑雪——记搜经典例题+动态规划可解
P1434 [SHOI2002]滑雪取巧代码(90%)这个代码其实不能算记忆化搜索,应该算是一个基于预处理的dfs搜索。思路是先遍历整个mat,找到一些值得去深搜dfs的点,然后再去进行dfs。具体的值得深搜的含义是:这个点是一个局部最大值,也就是说它的周围的点都比它小。因此我们先遍历整个mat[i][j],判断(i,j),比较这个点和周围4个方向的点的值,是否是局部最大,不是就置0,是就...原创 2019-11-05 11:04:53 · 284 阅读 · 0 评论 -
记忆化搜索(1):P1118 数字三角形——暴力dfs->找规律+最大最小值dfs剪枝
暴力dfs基于全排列方法的dfs,全排列的构造是通过dfs来实现的,然后就是使用了回溯算法。在到达尾部的时候,调用一个函数ansIsOk来判断结果是否符合。也就是把相邻的数字进行相加。符合就跳出,并且标记flag,不再进行后续的搜索。flag其实可以写到剪枝里面,也就是作为一开始return的一部分。#include<iostream>#include<algorithm&...原创 2019-11-04 15:29:39 · 409 阅读 · 0 评论