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