java 数字拼图 算法

就是简单的9格拼图,12345678排序就过关,说一下思想,最好是通解,就是4*4,5×5都好的... 就是简单的9格拼图,12345678排序就过关,说一下思想,最好是通解,就是4*4,5×5 都好的 展开
 我来答
luffy1201
2009-05-16 · TA获得超过1524个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:590万
展开全部

要想得到最优的就需要使用广度优先搜索,九宫的所有排列有9!种,也就是362880种排法,数据量是非常大的,使用广度搜索,需要记住每一个结点的排列形式,要是用数组记录的话会占用很多的内存,可以把数据进行适当的压缩。使用DWORD形式保存,压缩形式是每个数字用3位表示,这样就是3×9=27个字节,由于8的二进制表示形式1000,不能用3位表示,使用了一个小技巧就是将8表示为000,然后用多出来的5个字表示8所在的位置,就可以用DWORD表示了。用移位和或操作将数据逐个移入,比乘法速度要快点。定义了几个结果来存储遍历到了结果和搜索完成后保存最优路径。

参考资料: http://www.cublog.cn/u/8780/showart.php?id=163291

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式