分析:经典的八数码问题,参考别人的代码写的,逆向广搜,把结果保存起来,之后在使用。
#include
#include
using namespace std;
#define STATE_COUNT 363000 //因为9!=362880
int fact[]={1,1,2,6,24,120,720,5040,40320,362880}; //0到9的阶乘,用来计算hash值
cha...
分类:
其他好文 时间:
2015-04-27 21:54:28
阅读次数:
175
1.题目描述:点击打开链接
2.解题思路:本题利用迭代加深搜索解决。好久没做这个专题了,感觉这种方法有点力不从心,不会寻找估价函数是硬伤。。。只好学一学别人的代码。
本题要求棋盘中间的8个方格都要是相同的数字。紫书上说是利用状态空间搜索解决,大致模板还是八数码问题的模板。但是写了半天最后WA了,感觉这道题用那个模板写出来会很复杂。最后看别人的代码,才发现大多都是利用迭代加深搜索解决的,代码量也...
分类:
其他好文 时间:
2015-04-11 18:01:30
阅读次数:
161
搞了半天八数码弄不出来就只好来打题解 这道题是在搜索a碰到的(链接: http://pan.baidu.com/s/1jG9rQsQ) 感觉题目最大亮点就是这英文简写"ni", 真是令人感慨出题老师的才华啊 好了,废话不多说 题目内容如下(闲烦请无视之,下下方有简单的介绍):【问题描述】 贝 西.....
分类:
其他好文 时间:
2015-04-10 23:56:57
阅读次数:
142
抽空写了八数码问题的bfs版本,数据结构方面可能还有很多欠缺然后需要用一个map来保存所有的路径,因为是bfs所以map可能会比较大(是很大吧!),但是比dfs好的地方在于可以找到最短路径,妈妈再也不用怕我看dfs那么深的递归树了恩。。。dfs和bfs的速度都不及dbfs和a*的,所以有空会补上这两...
分类:
其他好文 时间:
2015-04-03 14:57:52
阅读次数:
149
一.八数码问题八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。所谓问题的一...
分类:
编程语言 时间:
2015-03-18 23:14:44
阅读次数:
254
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 , 康托展开 + BFS + 打表。 经典八数码问题,传说此题不做人生不完整,关于八数码的八境界:http://www.cnblogs.com/goodness/archive/2010/0...
分类:
其他好文 时间:
2015-03-18 13:58:06
阅读次数:
135
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 //正向广度搜索 8 //把“x"当初0 9 using namespace std; 10 11 const int maxn = 1000...
分类:
其他好文 时间:
2015-03-16 12:54:19
阅读次数:
130
题目链接:http://poj.org/problem?id=1077题目描述:民间流传的推15游戏,不过这里简化为3*3,也就是八数码问题,‘x’表示空位。与AOJ0121的“Seven Puzzle”类似。思路:没什么特别的,构造字符串队列,爆搜一下。注意Hash函数,哈得好就哈哈,哈得不好就只...
分类:
其他好文 时间:
2015-02-24 18:42:15
阅读次数:
291
问题描述
如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。
我们把第一个图的局面记为:12345678.
把第二个图的局面记为:123.46758
显然是按从上到下,从左到右的顺序记录数字,空格记为句点。
本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出-1。
输入格式
输入第一行包含九宫的初态,第二行包含九宫的终态。
输...
分类:
编程语言 时间:
2015-02-15 15:12:04
阅读次数:
299
Problem Description
The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and all packed into a 4 by 4 frame with one tile m...
分类:
编程语言 时间:
2015-02-15 09:29:04
阅读次数:
1023