*********************************************************************本函数是用A*算法来实现八数码的问题***算法的步骤如下:*1、初始化两个链表open和closed,将初始状态放入open表中*2、重复下列过程,直至找到目标结点为止,如果open表为空,那*么查找失败;*3、从open表中拿出具有最小f值的结点(将这一结点称为BESTNODE),*并放入closed表中;*4、如果BESTNODE为目标结点,成功求得解,退出循环;*5、如果BESTNODE不是目标结点,那么产生它的后继结点(此后继结*点与其祖先的状态不同),后继结点组成一个链表;*6、对每个后继结点进行以下过程:*7、建立它到BESTNODE的parent指针;*8、如果此结点在open表中,首先将open表中的结点添加进BESTNODE*的后继结点链中,然后计算两个结点的g值,如果此结点的g值小*于open表中的结点时,open表中的结点改变parent指针,同时将*此结点删除;*9、如果此结点在closed表中,首先将closed表中的结点添加进BESTNODE*的后继结点中,然后计算两个结点的g值,如果此结点的g值小于*closed表中的结点时,closed表中的结点改变parent指针;将*closed表中的结点重新放入open表中,同时将此结点删除;*10、如果此结点既不在open表中也不再closed表中,那么添加此结点至*BESTNODE的后继结点链中
***Author:转载作者不详
**2011
16**********************************************************************/#include"stdafx
h"#include#include#in