马的遍历

马的遍历问题
一个棋盘有8行8列,中国象棋中的马从一个位置出发,求能够遍历棋盘的走法

 

这个程序今天终于运行成功了。其实思想就是普通的回溯,前两天写的程序一直没有运行成功,但错误又找不出来。今天看到题目上的一行字才猛然醒悟,从(0,0)点开始需要回溯300W次。在我这台略显古老的机器上要跑40-50秒。我看程序运行十几秒还没反应以为死循环了呢,用断点跟踪也是在某个数值段上上下来回起伏。改了又改,越改越错。这次又给我一个教训。


言归正传,上思路。
1,提供一个BOOL类型数组,全部全部置为FALSE,表示没有遍历过,选定一个起始位置(X,Y),将该点压入栈底,并将该点对应数组中的位置改为TRUE。并将其实位置点作为当前点。
2,取当前点的INDEX
 if index < 7
     向index所指向的方向移动,index+1
     if 该店标记为 false
         保存该点信息和新点信息,将该点置为true,返回2
     else
         返回2
 else
     将当位置改为false,并将该点丢弃,去栈顶点位当前点 返回2

3,重复2,一直到栈的元素数量为64,此时全部遍历完成

下边是代码


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值