.八数码问题详解(用bfs实现)八数码问题也称为九宫问题。在33的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。所谓问题的一个状态就是棋子在棋盘上的一种摆法。棋子移动后,状态就会发生改变。解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态。如图:对这道题用bfs解决个人认为是个不错的方法,首先因为它有九个格子,那么便可以用state数组记录他的的九个格子的数值,其中空格为0,后者由于它只有九个数,因此共有9!=362880种可能性,用bfs解决较快。下面给出bfs实现的三种代码(这里的三种指的是对是否访问过已知节点的三种判断方法):1./用一套排列的编码和解码函数解决同一状态的再次访问/用统一的编码与解码函数避免同种状态的再次出现#include