![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
-----搜索-----
stormjing7
这个作者很懒,什么都没留下…
展开
-
【PAT 甲级】1004 Counting Leaves (30分)(dfs水)
1004 Counting Leaves (30分)题目给一颗节点数不超过 100 的树,求每一层的叶子节点的个数。分析建树之后记录每个节点有无孩子,之后 dfs 一下记录每个节点在第几层。将信息归总统计一下即可得出每层叶子节点数。#include <bits/stdc++.h>using namespace std;#define db(x) cout<<x...原创 2020-01-28 20:13:42 · 149 阅读 · 0 评论 -
【PAT 甲级】1003 Emergency (25分)(dfs + STL)
1003 Emergency (25分)题目给一个顶点数不超过 500 的图,每个顶点有权值,边也有权值。给定起点和终点,求边权值最短的路径集合(也就是说最短的路径不止一条,而且每条最短路径对应一个顶点权值和),输出这个集合的路径个数,以及集合中顶点和的最大值。分析题目在求最短路径的基础上,还增加了每条路径对应的顶点权值和。所以可以用 dfs 求出所有最短路径,并将对应的权值和放入到 m...原创 2020-01-27 18:01:20 · 249 阅读 · 0 评论 -
字符串所有出栈顺序
JXUST-OJ 广告位招租 K: Keep patient (搜索)K: Keep patient题意:给你一个长度小于14的字符串,输出所有出栈顺序。分析:搜索即可,每次分为出栈入栈两种选择,这个题一定不等用c++输出,不然会超时,加速也没用。两个版本dfs, bfs,dfs的#include <bits/stdc++.h>#pragma GCC diagnost...原创 2019-04-23 16:08:37 · 1489 阅读 · 0 评论 -
搜索进阶专题
搜索进阶专题1.原创 2019-07-14 16:49:52 · 317 阅读 · 0 评论 -
UVA - 11624 Fire!(BFS+ 思维)
UVA - 11624 Fire!题目给一个迷宫,起始位置,还有着火点,每过一个时间,着火点都会蔓延,问最终能否从迷宫逃出。分析如果没有着火的情况,直接BFS模板题,加上着火的话,可以预处理每个点被蔓延的时间,到时候 bfsbfsbfs 能不能走出去的时候,不能走当前已经着火的地方。预处理着火的地方,要将所有起始找着火点都加入初始队列,相当于多个源点。代码#include <c...原创 2019-07-25 16:04:53 · 196 阅读 · 0 评论 -
HDU - 1175 连连看(BFS 扩展顺序不同导致WA ???)
HDU - 1175 连连看题目给一个迷宫,起点和终点,问是否能从起点走到终点,且转向次数不超过 2 次。分析题目并不难,很容易想到 bfs,不过要有很多细节要注意。定义 bfs 的每次的状态包括当前位置,当前已转向次数,来时的方向。可以先将终点位置值设为 0 ,即通路,便于写代码。但是 bfs之后要改回去。后面判断转向就用要去的方向与来时的方向一样不一样。注意细节。代码#in...原创 2019-07-17 17:03:49 · 186 阅读 · 0 评论 -
CodeForces 199D (BFS 或 DFS)
CodeForces 199D题目有两个平行的序列 1 到 n,初始的时候你在上序列 1 位置,每次可以选择跳一下,有三种方式,位置 x +1 ,x - 1,或者跳到另外一个序列的 x + k 位置。同时还有一个值,初始为 0,每次加 1,你挑一下,这个值加一下,要保证任何时候位置值都要大于这个值。问位置值能否超过 n。分析直接搜索即可(DFS 或者 BFS),要注意剪枝。不要找重复的状态...原创 2019-07-17 21:09:32 · 251 阅读 · 0 评论 -
HDU - 1043 Eight (八数码:逆向BFS + 康拓展开)
HDU - 1043 Eight题目题目是八数码问题,肯定都玩过,输出数据是多组,每次给出初始状态,问能否达到123456780 的状态,如果能就输出上下左右的路径,不能就输出英文。分析看了一眼题,感觉 bfs 还可以,因为状态很好表示,代码...原创 2019-07-20 19:10:57 · 218 阅读 · 0 评论 -
UVA - 10047(BFS 标记数组的应用)
UVA - 10047题目给一个迷宫,从 S 走到 T,每一次操作可以选择改变朝向,或者往当前朝向的方向前进一格,不过到达 T 的时候,底色还是原来的底色 ,(一共有5个底色,走一格变化一次,初始朝向为北),求最小操作。分析BFS套模板,不过要注意标记数组的应用,不仅仅是位置的标记,这个题要标记4个状态,位置,朝向,底色。先到的不一定是最小的,所以要求所有路径最小。ans = min...原创 2019-07-25 22:05:58 · 152 阅读 · 0 评论 -
HDU 6446 Tree and Permutation (树上任意两点距离之和,DFS,思维)
HDU 6446 Tree and Permutation题目给一颗 n 个节点的带权树树,定义一个排列的距离为按排列顺序最短路径和。求 n 的全排列的距离和。例如: n = 4,其中一个排列为 4 1 2 3。那么这个排列距离为 4 -> 1 -> 2 -> 3。x ->y 指的是 x 到 y 的最短路径。分析对于全排列,分析任意两点距离对排列的贡献。假如 ...原创 2019-08-21 22:31:34 · 432 阅读 · 0 评论 -
PTA天梯赛-练习集 L2-001 紧急救援(dijk + dfs)
题目给出的图不光路径有权值, 每个点也有权值,让求最短路径的个数,及最短路径中经过点的权值和最大的最优路径,输出最短路径条数,点的最大权值和,及最优路径走法。思路:先用dijk求出最短路径的长度minlen,在用dfs求出最优路径,中间用minlen来进行最优解剪枝。#include <bits/stdc++.h>using namespace std;#define d(...原创 2019-03-28 21:26:53 · 527 阅读 · 0 评论 -
L2-031 深入虎穴(bfs 有坑)
这道题是前天天梯赛的题,当时看了一下以为要建树,加上vector忘了怎么插入数据,就没做,下面看了一下,直接bfs就行,注意这题有个坑,要先把入口求出来,就是入度为零的节点,因为题目没说1一定是根节点#include <bits/stdc++.h>using namespace std;const int mod = 1e9 + 7;typedef long long ll;...原创 2019-04-01 21:32:17 · 617 阅读 · 0 评论 -
POJ-1321棋盘问题(dfs)
图论dfs入门题,纯暴力,题目要求在所给棋盘中,将棋子放入‘#’的位置,且同一行同一列只能放置一个棋子。注意dfs中递归的方式。分别以每行棋子开始进行dfs遍历,最后将结果相加。代码如下:#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt;string&amp;gt;#include &原创 2018-11-15 17:44:44 · 160 阅读 · 0 评论 -
POJ - 2251 Dungeon Master(三维bfs)
Dungeon Master题意:给你一个三维的图,让你找到从S到E最短的路径。做法:直接套bfs模板,只不过要把数组改为三维的。代码:#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <algorithm>#...原创 2018-11-15 19:36:41 · 153 阅读 · 0 评论 -
POJ-3278 Catch That Cow(bfs+剪枝)
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,0...原创 2018-12-03 22:00:05 · 235 阅读 · 1 评论 -
UVA 816 Abbott's Revenge(带方向的bfs)
UVA 816题意给你一幅图, 求起点到终点最短路,图中每个节点进入的朝向跟出去的方向题目会给出。分析用一个三元组来保存状态(r, c, dir),代表当前位置在r, c。面朝dir方向。#include<bits/stdc++.h>using namespace std;struct Node{ int r, c, dir; // 站在(r,c),面朝方向d...原创 2018-12-18 21:41:03 · 174 阅读 · 0 评论 -
POJ -3279 Fliptile(二进制枚举, 搜索)
题目大意:有一个 M * N 的格子,每个格子可以翻转正反面,它们有一面是黑色,另一面是白色。黑色翻转之后变成白色,白色翻转之后则变成黑色。游戏要做的是把所有的格子翻转为白色。不过因为牛蹄很大,所以每次翻转一个格子,与它上下左右相邻接的格子也会被翻转。求用最小的步数完成时,每个格子的翻转次数。最小步数的解有多个时,输出字典序最小的一组;解不存在的话,则输出IMPOSSIBLE分析:第一眼就...原创 2019-03-05 22:16:44 · 247 阅读 · 0 评论 -
POJ - 3414 Pots (倒水问题 BFS + 打印路径)
POJ - 3414 Pots题目大意就是给你A, B两个杯子,及他们的最大容量,三种操作方法,让你判断最少用多少此方法可以让任意一个被子里装有 C 升水。并打印路径。分析这里很容易想到广搜,设初始状态为(i,j),一共就只有六种变化A杯倒满,B杯倒满,A杯倒出完,B杯倒出完,A到给B,B到给A。任意一种状态i 或者 j达到 C 就停止,注意要打印路径,我这里用一个string存的操作...原创 2019-03-11 19:07:17 · 544 阅读 · 1 评论 -
倒水问题 bfs (例:uva 10603)
问题大意倒水问题一般有三个杯子, 容量分别为a, b, c,最初只有第3个杯子装满了c升水,其他两个杯子为空,最少需要几次操作能让某一个杯子水有d升...原创 2019-03-11 20:54:42 · 1989 阅读 · 0 评论 -
递归求全排列(dfs)
递归求全排列(dfs)一张图看懂。交换递归回溯#include <cstdio>#include <vector>#include <queue>#include <cstring>#include <cmath>#include <map>#include <set>#include原创 2019-03-13 16:41:35 · 459 阅读 · 0 评论 -
UVA 572 Oil Deposits(dfs遍历)
UVA 572题意题目很简单,就是求给张图,求联通分量,节点可以和周围八个方向联通。例:分析每次遍历找到一个@,以这个为起点,dfs一下将联通的点 都标记为#,知道遍历找不出@,输出dfs的次数就是联通分量#include<bits/stdc++.h>using namespace std;const int N = 100 + 10;const int INF = 0...原创 2018-12-12 20:36:23 · 152 阅读 · 0 评论 -
HDU-2612 Find a way(双向bfs)
Find a way题意:给你一维图,两个人Y,M,约在kfc(@)见面,求两个人走的步数和最小的走法做法:分别从两个人的位置进行bfs,将两次的结果写入ans数组,最后遍历ans数组,找出两个人都能到且步数和最小的kfc。代码:#include &lt;iostream&gt;#include &lt;cstring&gt;#include &lt;string&gt;#inclu...原创 2018-11-15 19:26:46 · 285 阅读 · 0 评论