华容道游戏:广度优先搜索优先搜索

华容道游戏是非常经典的BFS应用的题目。

下面是几个我参考过的链接:

使用java语言实现,充分体现OOAD和数据结构的应用,讲的非常详细,但是太过于复杂了:

http://www.cppblog.com/tx7do/archive/2006/09/18/12691.html

简单版本的介绍,非常有用,而且有完整的源代码:

http://blog.chinaunix.net/u/19651/showart_395172.html

虽然讲的详细,但是代码也成这副样子,值得同情:

http://www.fjptsz.com/xxjs/xjw/rj/110.htm

 

下面是我通过这道题的一些体会:

 

1、重复状态的判重方法

 

在很多与走步有关的题目中,一般会涉及到重复状态的检测,在搜索过程中需要忽略掉这些重复状态,这样才能避免不必要的搜索代价。

我使用通过对局面做hash的方法来检测是否存在重复状态,只有不重复的新状态才插入到hash表中。原来hash函数是通过对grid[5][4]这个局面进行移位运算来产生分布均匀的hash值,但是效果始终不理想。

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值