文档介绍:#include<iostream>#include<deque>#include<algorithm>#include<iterator>usingnamespacestd;#defineM3classMatrixNode{//定义MatrixNode类public: intm;//在位个数intd;//深度intp;//牌与其目标位置直接步数之和 intf;//f=d+p,估价函数 intplace[M][M];//当前矩阵intplacetrue[M][M];//目标矩阵 intkong_x;//空位的横坐标 intkong_y;//空位的纵坐标//-------------------------------------------------------------------------------public: MatrixNode(); MatrixNodestart(MatrixNodeM_Matrix);//初始矩阵 intTruePlace(MatrixNodeT_place);//查找在位数 intp_place(MatrixNodeP_place);//坐标差绝对值之和intf_kongx(MatrixNodefind_kongx);//找出空格的横坐标 intf_kongy(MatrixNodefind_kongy);//找出空格的纵坐标boolsolved(MatrixNodeM_Matrix);//判断是否有解,奇偶性相同则有解,否则无解 MatrixNodeup_move(MatrixNodeM_Matrix);//空格上移MatrixNodedown_move(MatrixNodeM_Matrix);//空格下移MatrixNodeleft_move(MatrixNodeM_Matrix);//空格左移MatrixNoderight_move(MatrixNodeM_Matrix);//空格右移MatrixNodeupdata_m(MatrixNodeM_Matrix);//移动后更新状态MatrixNodeparents(deque<MatrixNode>ilist,MatrixNodeM_Matrix);//找到该节点的父亲};//=========================================================================================MatrixNode::MatrixNode(){//目标矩阵 placetrue[0][0]=1;placetrue[0][1]=2; placetrue[0][2]=3; placetrue[1][0]=8; placetrue[1][1]=-1; placetrue[1][2]=4; placetrue[2][0]=7; placetrue[2][1]=6; placetrue[2][2]=5;} //----------------------------------------------------------------------------------------- MatrixNodeMatrixNode::start(MatrixNodeM_Matrix){//初始矩阵cout<<"请按