跳马周游c++_骑士周游问题跳马问题C#实现(附带WPF工程代码)

骑士周游问题,也叫跳马问题。

问题描述:

将马随机放在国际象棋的8×8棋盘的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。

代码要求:

1,可以任意选定马在棋盘上的起始位置,

2,计算并打印马跳的路线。

3,可以控制代码执行的速度

4,可以随时暂停开始程序

5,程序结束后可以打印代码

问题解决:

开发环境--vs2015  开发语言--c#

设计思想:建立8*8的int数组,存储棋盘当前状态。选择当前马的位置,按照深度优先搜索写一个递归函数按次序遍历马的八个下一步位置。

缺点:算法效率低(如果马跳的慢一点程序跑一宿都没有结果。ps:根据图论,8*8的跳马问题是一定有解的)

优化:优化马跳下一步的顺序,优先选择出路少的路径。比如可以往左上和右上跳,左上跳之后有3种选择,右上跳之后有2种选择,则选右上。

结果:除少部分点需要回溯,大部分基本可以一次寻找到解;

图形化预览界面:

设计思想:

对使用usercontrol实现简单的界面显示。设计思想改进,更好的设置应该是把每一个格子设计成一个

对象,将格子的线直接binding到数据集上,实现界面和业务的分离。然而只是个大作业懒得写的那么麻烦了,

符合实际需求才是最好的方案。

-------------------------------------------------------------------

笔者最近穷的很,想下载别人的资源却没积分。读者老爷想下资源的话,可以赏在下两个积分orz

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值