|
尝试一下。
先定义一个简单的结构描述3X3的状态。
比如435612_78可以用来表示
435
612
_78
再写一个移动的可能性产生器
比如从435612_78有两种可能,4356127_8和43561_278
还需要一个评分器,也就是说,当前的状态离目的地还有多远。
比如可以定义
435
612
_78
中的4距目的的距离是1,3距目的的距离是1,5距目的的距离是2,6距目的的距离是2,1距目的的距离是2,7距目的的距离是1,8距目的的距离是1。
那么总和是10。
具体的定义可以更细分。
最后需要一个有序链,每个节点有四部分组成,结构,节点是否试过,距目标的距离,父节点。
程序开始用随机数先初始化结构。
对其进行评分。
加入到有序链。
下面是一个循环
1。从有序链里选离目标最近而且还没有尝试过的节点
2。是否是目标,如是跳出循环,打印。
3。该节点在有序链中标记为尝试过。
4。计算移动可能性。
5。对每种移动可能性检查是否已在有序链中
6。对没在有序链中的移动可能性进行评分
7。将此移动可能性及其评分和父节点加入有序链
8。重复1
打印部分就不写了,就是按照父节点往回找。 |
|