当前位置:   article > 正文

骑士周游问题(非递归暴力回溯)_骑士巡游非递归

骑士巡游非递归

采用非递归暴力回溯方法,程序执行3分钟左右。 

  1. from Stack import Stack # j假设你以前自己定义好一个栈类
  2. import datetime
  3. '''
  4. 算法思路
  5. 1、指定一个当前点
  6. 2、根据“马”的走法确定马的前进位置(已经走过的位置除外)
  7. 3、如果当前位置全部失败,则返回离当前位置最近的点重新向前搜索
  8. 终止条件为64格子全部都走过
  9. '''
  10. def passable(next_loct,move_road):
  11. i = next_loct[0]
  12. j = next_loct[1]
  13. # print ("当前经过的路线为{0}".format(move_road))
  14. if i >= 0 and i <= 7 and j >= 0 and j <= 7 and (not (next_loct in move_road)):
  15. # 如果下一步移动位置位于棋盘内且未经过,返回True
  16. return True
  17. return False
  18. def horse_travel(start_grid):
  19. # 马的移动方向
  20. horse_dirc = [(-2,1), (-1,2), (1,2), (2,1), (2,-1), (1,-2), (-1,-2), (-2,-1)]
  21. st = Stack()
  22. # 初始化栈,栈中元素为列表,包含起点位置,下一搜索方向及一个用于标识该点为第一次使用的标志
  23. st.push([start_grid,0])
  24. move_road = [start_grid] # 用于维护行走路线
  25. while not st.is_empty():
  26. now_loct = st.pop() # 弹出下一个前进位置
  27. next
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/573608
推荐阅读
相关标签
  

闽ICP备14008679号