
搜索:BFS
文章平均质量分 68
BRCOCOLI
初学者 记录成长 Fighting
展开
-
Fire Net
http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1162#include#include#include#include#include#include#include#include#include#includeusing namespace std;char G[4][4];原创 2016-05-25 19:01:36 · 446 阅读 · 0 评论 -
DBFS框架
以前以为是一个队列搜索一圈,再另一个队列搜索一圈 然而这样可能效率低下伪代码如下:void dbfs(){ 1. 将起始节点放入队列q0,将目标节点放入队列q1; 2. 当两个队列都未空时,作如下循环: 1) 如果队列q0里的节点比q1中的少,则扩展队列q0; 2) 否则扩展队列q1 3. 如果队列q0未空,不断扩展q0直到为空; 4. 如果队列q1未空,不断扩展原创 2016-09-12 13:53:15 · 972 阅读 · 0 评论 -
POJ 1077 Eight BFS -
题目地址:http://poj.org/problem?id=1077木有A*快..#include#include#include#include#includeusing namespace std;struct Node{ int status; int parent; int move; Node(int s=0,int p=0,int m=-1):status原创 2016-09-12 12:36:10 · 246 阅读 · 0 评论 -
POJ 1729 Jack and Jill BFS *
题目地址:http://poj.org/problem?id=1729本来想用string保存路程 后来发现太慢了优先队列要以一条路中最近的距离排序#include#include#include#include#include#includeusing namespace std;const int maxn=30+5;const double INF=9999999原创 2016-09-12 09:19:12 · 633 阅读 · 0 评论 -
百练 4155 鸣人和佐助
百练 4155#include#include#include#include#include#includeusing namespace std;const int maxn=200+5;int R,C,vis[maxn][maxn][15];char G[maxn][maxn];int r0,c0,r1,c1;struct Point{ int x,y,step,原创 2016-07-21 20:27:16 · 546 阅读 · 0 评论 -
百练 4116 拯救行动
4116:拯救行动#include#include#include#include#include#includeusing namespace std;const int maxn=200+5;int R,C,vis[maxn][maxn];char G[maxn][maxn];int r0,c0,r1,c1;struct Point{ int x,y,ste原创 2016-07-21 21:40:04 · 1111 阅读 · 0 评论 -
百练 4130 Saving Tang Monk [BFS+优先队列+状态压缩]
百练题目地址判重3个状态就够了 位置+钥匙除了#位置,其他位置都可以经过多次注意钥匙数可以为零因为打蛇要time+2,所以用优先队列蛇的数量#include#include#include#include#include#include#includeusing namespace std;const int maxn=100+5;int N,K,vis[原创 2016-07-23 14:44:22 · 1218 阅读 · 0 评论 -
UVa 1601 The morning after Halloween(单向BFS+双向BFS)
//测试数据 /*5 5 2######A#B## ##b#a######16 4 3################## ########## ### ABCcba #################16 16 3################### ## # #### # ## # c## ## ########b##原创 2016-05-08 17:33:21 · 889 阅读 · 0 评论 -
UVa 1343 The Rotation Game(IDA*)
主要是设计乐观估计函数来减枝假设中心区域有6个2,2个3,那肯定是消掉3最好,毕竟就两个。那么理想情况下,旋转一次就能把一个3变成2,那么最少操作2次。我们用h()来计算最少还要操作几次,其原理是假设中心区域都放1或2或3,返回至少操作的次数中最小的数maxd是假设最多能操作的数;d是已经操作的数;那么就可以得出乐观估计函数 h()+d>maxd 其含义为 : 若原创 2016-05-08 15:14:37 · 555 阅读 · 0 评论 -
八面码问题(BFS+Hash)
#include#include#include#include#include#include#include#include#includeusing namespace std;typedef int State[9];const int maxn=1000000;State st[maxn],goal; //相当于st[maxn][9]保存走的每一步下的8个数字原创 2016-05-07 09:18:28 · 486 阅读 · 0 评论 -
A*,Dijkstra,BFS算法性能比较及A*算法的应用
一之续、A*,Dijkstra,双向BFS算法性能比较及A*算法的应用作者:July 二零一一年三月十日。出处:http://blog.youkuaiyun.com/v_JULY_v-------------------------------------------------- 引言: 最短路径的各路算法A*算法、Dijkstra 算法、BFS算法,都已在本B转载 2016-05-16 19:21:32 · 25267 阅读 · 3 评论 -
UVa 1599 Ideal Path[待AC]
dix[]保存到终点的最短权值,d[]保存到终点的最短边长结构体保存边和权值,二维数组太大用不了;一直Runtime Error.....#include#include#include#include#include#include#includeusing namespace std;const int INF=(1<<30);const int maxn=100原创 2016-05-02 08:35:28 · 314 阅读 · 0 评论 -
UVa 1600 Patrol Robot[待AC]
front表示当前搜索层,rear表示上一层d[]表示第几层,b[]表示穿越的障碍数#include#include#include#include#include#includeusing namespace std;const int M=1000;int G[25][25],k,x,y;const int dx[]={0,1,-1,0};const int dy[原创 2016-05-01 21:36:07 · 267 阅读 · 0 评论 -
UVa 439 Knight Moves
BFS可以想成树的层序遍历,关键是1)判重,表示偷懒用set判重; 2)判断搜索到第几层,用front表示当前层数,rear表示上一层层数。#include#include#include#include#include#includeusing namespace std;set st;char s1[5],s2[5];const int dx[]={2,1,-1,-2原创 2016-05-01 19:40:33 · 261 阅读 · 0 评论 -
畅通工程(DFS求连通块)
要求最少多少个点才能连所有边思路:如果1与2相连,就把1和2看成一个点,即所有连通的点看成所有点; 那么连通n个点至少需要n-1条边#include#include#includeusing namespace std;const int maxn=1000+5;int G[maxn][maxn];int vis[maxn],N,E,cnt;int d原创 2016-05-25 19:23:48 · 466 阅读 · 0 评论 -
POJ 1077 Eight 八数码 DBFS
题目地址:http://poj.org/problem?id=1077#include#include#include#include#includeusing namespace std;struct Node{ int status; int parent; int move; Node(int s=0,int p=0,int m=-1):status(s),paren原创 2016-09-12 18:53:37 · 255 阅读 · 0 评论