随笔分类 - 搜索
摘要:DFS双向搜索的经典例题。 对于DFS和BFS来说双向搜索都能有效降低时间复杂度,但缺点就是会多开销空间,也就是用空间换时间。 由于我们的搜索范围是逐步扩大的所以当我们的每个节点的子节点较多时就可以做到如下: 红色部分是从反向开始搜索,这样我们就可以明显看出我们有效的降低了时间的复杂度。 题目: 思
阅读全文
摘要:NOI原题: dfs剪枝的经典例题(据yxc老师说他那时北大考了不少次)。 重要一点:题目为了方便计算选择了不考虑π。 剪枝(方便说明,最上面是第一层,当前是第u层,最下面是第m层) ①:优化搜索顺序 由于我们是寻找分支最少的路线进行搜索,所以我们每次应当从下往上搜,并且从当前能取得的最大值搜索,这
阅读全文
摘要:上古NOI原题,刚学搜索时完全没头绪,过了几个月之后倒是很顺利的做出来了。 题目: 思路: 首先我们需要通过需处理出每个字符串对应每个字符串能接的后缀长度(可以有效地降低时间复杂度),此时就需要使用到字符串截取函数 substr (底部附有用法) ,由于我们需要找到最长的“龙”长度,所以我们在预处理
阅读全文
摘要:使用的优化: 优化搜索顺序: 每次选择分支最少的格子进行搜索 可行性优化: 每行每列每个九宫格不能有重复数字 二进制优化: 每行每列每个九宫格使用二进制数来表示每个数是否能够被使用,如果是1那么就能被使用,0就不能被使用,这样可以通过对行列九宫格进行与运算和lowbit运算可以快速的求出能使用哪些数
阅读全文
摘要:1.优化搜索顺序 大部分情况下应该选择优先搜索分支较少的点。 2.排除等效冗余 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索
阅读全文
摘要:给定一个 n×nn×n 的二维数组,如下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横
阅读全文
摘要:ps:写这篇博客的原因是因为在一次比赛中需要按字典序来遍历图,就是这样一道简单的题,由于本蒟蒻只会链式前向星存图方式导致一直做不出来,深切感受到了来自图论的恶意!!! 三种常见的存图方式; 一、邻接矩阵 邻接矩阵是使用二维的数组来实现存图方式,用于储存稠密图,第一维表示每一个点,第二维表示以这个点为
阅读全文
摘要:树和图的两种遍历方式即为特殊的DFS和BFS 用单链表储存树和图时,从每一个节点的头指针只能储存当前节点能到达的下一层的节点 宽度优先遍历没有进行递归所以每一次搜索都是以头结点指向的位置 例如 1->2 1->3 1->5 2->8 3->6 3->7即h[1]->5->3->2->-1;h[2]-
阅读全文
摘要:树和图的存储方式是用链表来实现。 一般较常使用的单链表和邻接矩阵 由于目前只学了单链表就只叙述下单链表的实现 单链表:(这里使用数组模拟的方式) 单链表实现树和图的储存即开一个几个数组:e[i](储存当前节点的数值)h[i](储存每个节点的数值的头指针)ne[i](储存每个节点指向的下一个节点) 1
阅读全文

浙公网安备 33010602011771号