最近女票的数据结构作业有道是利用 A*算法解决八数码问题。
就是在 3×3 的棋盘上,摆有八个棋子,每个棋子上标有 1 至 8 的某一数字。棋盘中留有一个空格,空格用 0 来表示。空格周围的棋子可以移到空格中。求出从初始状态到目标状态的最少步骤和路径(解法)。
然后花了一晚上写出来,这几天又加了 GUI 。
先上 github 地址方便大家 Star:https://github.com/netcan/SlidePuzzle
视频预览:https://raw.githubusercontent.com/netcan/SlidePuzzle/master/Slidepuzzle.mp4
游戏下载
洗澡去了。。。破学校断电迟早要完。
1
epkT6QJ3RSaz6AnJ 2016-04-12 01:41:52 +08:00 1
* struct 用 class 实现,减少 POD[here]( http://stackoverflow.com/questions/5432681/performances-of-structs-vs-classes),出于规范和兼容性考虑
* 两分查找在哪?如果 multimap 是 BST 那么也算吧 * multimap 实现优先队列是个坑,改手写的堆比较稳 |
2
markx 2016-04-12 06:32:23 +08:00
从来没写过 A*,基本上忘记了。
|
3
netcan OP @epkT6QJ3RSaz6AnJ 多谢指导。手写堆的话,状态可能不好搜索,现在效率还行,累坏情况 200ms 搜索出解
|
4
way2explore2 2016-04-12 10:22:25 +08:00
github 里放视频,这样不好吧 ......
|
5
netcan OP @way2explore2 视频不大。。。
|