首页 > 代码库 > POJ 3131 Cubic Eight-Puzzle 双向BFS + HASH
POJ 3131 Cubic Eight-Puzzle 双向BFS + HASH
超赞的一道搜索题,麻烦到没朋友,不过思路还是很清楚的。
双向搜索的时候需要注意一个地方就是起始状态只有一个,目标状态最多的时候感觉会有512个,所以要控制两个方向搜索的层数。第一次知道双向搜索还能控制层数,简直点赞。
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <queue> #include <cmath> #include <stack> #include <map> #pragma comment(linker, "/STACK:1024000000"); #define EPS (1e-8) #define LL long long #define ULL unsigned long long #define _LL __int64 #define _INF 0x3f3f3f3f #define Mod 6000007 using namespace std; char Map[5][5]; int Judge(char a,char b,char c) { if(a == 'W') { if(b == 'R') return 0; return 5; } else if(a == 'R') { if(b == 'W') return 1; return 3; } else if(a == 'B') { if(b == 'R') return 2; return 4; } else return 6; } struct Q { int sta,x,y,fl,ans; }; int mark[3000010][2]; int jx[] = { 0, 0, 1,-1}; int jy[] = {-1, 1, 0, 0}; int re[10][10]; int bit[10]; struct H { int site,data,next; }st[Mod]; int head[Mod]; int Top_H; int Query(int data,int Top) { int temp = data%Mod; int p = head[temp]; for(;p != -1; p = st[p].next) { if(st[p].data =http://www.mamicode.com/= data)>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。