![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
--------【基础搜索】
文章平均质量分 76
liuyanfeier
acmer
展开
-
HDOJ-1885Key Task(状态压缩)
迷宫问题,有钥匙和门的 bfs + 状态压缩 有四个钥匙四把锁,求最短路径具体解释都在代码里面,可以多看一下,并且和下一边状态压缩问题一起对应这看一下比较好。#include#include#include#include#includeusing namespace std;#define MAXN 110struct Node{ int原创 2015-09-11 21:04:35 · 288 阅读 · 0 评论 -
bfs 马的移动
小明很喜欢下国际象棋,一天,他拿着国际象棋中的“马”时突然想到一个问题:给定两个棋盘上的方格a和b,马从a跳到b最少需要多少步?现请你编程解决这个问题。简单的bfs问题,和上一篇一样可以作为bfs的简单模板#include #include #include #include using namespace std;int sx,sy; //起始坐标i原创 2015-08-12 19:44:19 · 676 阅读 · 0 评论 -
dfs+剪枝 poj1011
大致题意:给定一堆不定长度的小棒子,问他们能否构成一个正方形。思路:对所有的棒子求和sum之后除以4,得到边长side,问题就转换为求这些棒子能否拼接成4个长度为side的长棒子。有些地方可以剪枝:1,棒子的个数小于4或者sum不能整除4.2,边长side要大于等于棒子中最长的一根,因为棒子不能弄断3,当满足前两者的时候,只要拼接成了三条边就可以了4,将所有棒子原创 2015-08-12 20:14:39 · 465 阅读 · 0 评论 -
DFS
深优的话,占内存少,能找到最优解(一定条件下),但能很快找到接近解(优点),可能不必遍历所有分枝(也就是速度快), 深优的一个应用就是连连看游戏.深度优先搜索法有递归以及非递归两种设计方法。一般的,当搜索深度较小、问题递归方式比较明显时,用递归方法设计好,它可以使得程序结构更简捷易懂。当数据量较大时,由于系统堆栈容量的限制,递归容易产生溢出,用非递归方法设计比较好。不一定会得到最优解,这个时候原创 2015-08-12 20:18:38 · 460 阅读 · 0 评论 -
dfs 递归思想 解决排列组合的一些基础问题
对于搜索的深度很深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时可以考虑用递归法来完成搜索任务。递归是一种常用算法,它是搜索的另一种实现方式。如果在算法设计中采用一个函数或过程直接或间接地调用它自身来解决问题的方法,则称该方法为递归算法。递归算法必须要设计好一个或若干个确定的递归终止条件。一......Sample Input4 2 //用0,1组合出原创 2015-08-12 20:31:26 · 1163 阅读 · 0 评论 -
poj 2488 A Knight's Journey(DFS)
题目大意:给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。 马的遍历是一道经典回溯题,当然还是DFS...这题有2个要密切注意的地方: 1、题目要求以字典序方式输出,要以字典序输出路径,那么方向数组就要以特殊的顺序排列了,这样只要每次从dfs(0,0)开始搜索,第一个成功遍历的路径一定是以字典序排列. 2、国际象棋的棋盘,横行为字原创 2015-09-11 20:59:47 · 362 阅读 · 0 评论 -
Poj1129
当一个广播电台在一个非常大的地区,广播站会用中继器来转播信号以使得每一个接收器都能接收到一个强烈的信号。然而,每个中继器必须慎重选择使用,使相邻的中继器不互相干扰。如果相邻的中继器使用不同的频道,那么就不会相互干扰。由于无线电频道是一有限的,一个给定的网络所需的中继频道数目应减至最低。编写一个程序,读取一个中继网络,然后求出需要的最低的不同频道数。 建模:一个有N个节点的无向图,要原创 2015-09-11 21:02:49 · 506 阅读 · 0 评论 -
Hdu 1429(状态压缩)
有钥匙和门的 bfs + 状态压缩 一个十把钥匙和锁,分别为a,b......j。当所用的步数小于t即可。和上一篇对应着来看,加强状态压缩的理解。#include#include#include#includeusing namespace std;int n,m,t,ans;char map[21][21];int dir[4][2]={1,0,-1原创 2015-09-11 21:10:10 · 362 阅读 · 0 评论 -
poj1979 简单bfs
题意:就是给一个矩形,由.和#还有@组成,#不能走,然后一个人站在@处,问这个人最多可以走的位置有哪些。一个简单的bfs,然后看vis数组里面有多少个位置被标记就可以了。#include #include #include #include #include using namespace std;int const maxn = 25;char st原创 2016-04-30 10:56:28 · 373 阅读 · 0 评论 -
BFS
总体感悟广搜的话,占内存多,能找到最优解,必须遍历所有分枝. 广优的一个应用就是迪科斯彻单元最短路径算法。BFS在求解最短路径或者最短步数上有很多的应用。应用最多的是在走迷宫上。空间复杂度因为所有节点都必须被储存,因此BFS的空间复杂度为 O(|V| + |E|),其中 |V| 是节点的数目,而 |E| 是图中边的数目。注:另一种说法称BFS的空间复杂度为 ,其中 B 是最大分支系原创 2015-08-12 19:35:43 · 488 阅读 · 0 评论