马踏棋盘+贪心启发搜索;第一次接触这么高级的搜索-,-;下一步准备学习双向广搜了;

 

 

问题描述就不写了.

 

算法思想:

基本思想:利用栈实现深搜,每次入栈一个跳点,走到终点或者没有可跳点则退栈一个,继续深搜.

聪明的改进:给这个过程加入一个贪心策略,每次选择周边跳点时, 贪心优先选择一个出口最少的跳点.

这里说的出口是指能够跳到的邻接跳点的数量,当前位于(1,1)的话,可以用好几个跳点,从这些跳点中选出一个这些跳点可选择周边跳点最少的跳点.   贪心的原因据说是因为: 优先选择出口少的点,就可以先把一些遗漏的格子补满, 使得最后剩下的没跳过的点比较多而且密集,这样能最终全跳满的概率就非常大,甚至整个算法只需要入栈64次0回溯直接找到一个路径.

 

每个栈结点保存了当前点坐标,贪心选择跳点的数组,记录已走过的跳点的计数量,当所有邻接跳点都走过,则出栈,否则继续取没走过的邻接跳点深搜.

 

代码写的还稍微有点庞杂,不知道对你有没有帮助.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值