八数码问题 A* 算法
分析
@ analyse:
对于每一个状态设计对应结构体,
- 状态去重:
每种状态使用decimal number去重
- open表:
使用优先队列(小根堆),选取堆顶元素。
- close表:
使用vector
如果一个状态在open表中和close表中都没有出现,则将该状态加入open表中
如果一个状态只在open表中出现,则检查该状态与表中的状态谁更优,保存更优者
如果一个状态只在close表中出现,检查该状态与close表中的状态谁更优,如果更优,则把当前状态移动至open中,并更新最优值及路径