可以采用dfs,对空白点进行操作,然后可用编码法,哈希表或者集合来标记,代码如下 ...
分类:
其他好文 时间:
2018-11-22 00:01:31
阅读次数:
317
题目传送门 传送门I 传送门II 传送门III 题目大意 (八数码问题的树上版本)。 已经存在解的时候直接输出最少的移动步数。 否则允许加入一条边,要求输出边的端点以及最少的移动步数。 仍然无解输出-1. 题目传送门 传送门I 传送门II 传送门III 题目大意 (八数码问题的树上版本)。 已经存在 ...
分类:
其他好文 时间:
2018-10-31 23:30:44
阅读次数:
696
1、八数码问题 问题描述: 初态: 0 1 2 3 4 5 6 7 8 如何移动交换0的位置达到终态 1 2 3 4 5 6 7 8 0 思路如下: 先将图转换为一个整数 初态:876543210终态:087654321 构造状态的数据结构 struct node{int x;int where0; ...
分类:
其他好文 时间:
2018-10-20 12:55:53
阅读次数:
228
from utils import ( PriorityQueue) import copy infinity = float('inf') def best_first_graph_search(problem, f): #定义初始节点 node = Node(problem.initial) n... ...
分类:
编程语言 时间:
2018-10-06 20:36:34
阅读次数:
267
八数码的问题描述为: 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用 1来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局,找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。 解决八数码的方法很多,本文采 ...
分类:
其他好文 时间:
2018-09-20 22:18:34
阅读次数:
291
<题目链接> 题目大意:给出一个3×3的矩阵(包含1~8数字和一个字母x),经过一些移动格子上的数后得到连续的1~8,最后一格是x,要求最小移动步数。 解题分析:本题用BFS来寻找路径,为了降低复杂度,用BFS从最终的目标状态开始处理,将所有搜索到状态以及对应的路径打表记录,然后对于输入的矩阵,直接 ...
分类:
其他好文 时间:
2018-09-06 10:51:53
阅读次数:
151
题目来源: http://poj.org/problem?id=1077 题目大意: 给你一个由1到8和x组成的3*3矩阵,x每次可以上下左右四个方向交换。求一条路径,得到12345678x这样的矩阵。若没有路径,则输出unsolvable。 经典的八数码问题。 这题我用A*算法做的。推荐一篇博客, ...
分类:
其他好文 时间:
2018-08-30 02:05:34
阅读次数:
206
附上题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 我用了两种方法AC。第一种是双向广搜 + 逆序对奇偶剪枝 + 康拓展开 。 第二种方法是打表法,先用bfs搜素出所有路径,保存。当然还有康拓展开。第二种速度快多了。 第一种 用时 1880MS ...
分类:
其他好文 时间:
2018-03-24 20:36:25
阅读次数:
190
1 #include 2 #include 3 #define max 1000000 4 using namespace std; 5 const int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; 6 string origion; 7 string goal;... ...
分类:
其他好文 时间:
2018-02-14 20:18:23
阅读次数:
173
八数码问题传送门 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<vector> #include<queue> #include ...
分类:
其他好文 时间:
2018-01-30 12:39:17
阅读次数:
209