def salvePuzzle(self, init, targ): ''' 求解8数码问题 参数: init - 初始状态 例如'123046758' targ - 目标状态 例如'012345678' 返回值: clf - 由udlr组成的移动路径字符串 ''' def open_min(opl): # 找到open列表中最小的一个 k = opl[0] d = -1 t = 0 f_min = opl[0]['g'] + ...
A*算法有个很大的问题就是消耗内存资源,我们可以用char型数据保存,这里我另一种保存策略:用一个long int数值表示,方法如下 0-8九个状态可以四位二进制数来表示0000B-1000B,所以九个状态就可以用36个二进制位来表示,然后这36位二进制数就可以用一个long int型数据来表示,这样增加编码和解码工作,不过操作很风骚...
首页 技术域 高级语言 Python Astar算法解决八数码问题Python实现(GUI) 简介八数码问题:在3*3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。
import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.PriorityQueue; public class astar { public static void main(String args[]) { int[][] startStatus={{2,3,1},{5,0,8},{4,6,7}}; //起始状态 int[][] endStatus...