回溯法解决马步遍历问题

本文介绍了如何利用回溯法解决国际象棋马的周游问题,即在8×8的棋盘上,让马从起点出发遍历每个方格恰好一次。通过指定起点,遍历八方向上的相邻点并递归搜索,找到所有可能的路径。文章提供了一个C++实现的完整程序,并给出了详细解释。

设计一算法,求解国际象棋中的马的周游问题:给定一8×8的棋盘,马从棋盘的某个位置出发,经过棋盘中的每一个方格恰好一次。(只需求一可行解)

一、 算法思想描述

指定一个起点坐标,从起点开始对每个点遍历其能到达的八方向上的点,如果可以踩则走到该结点上,并继续深入遍历,直到最后走完所有的结点。

二、 完整的程序以及说明 

Code:
  1. #include<iostream>   
  2. using namespace std;   
  3.     
  4. //      棋盘大小   
  5. #define N 8   
  6.     
  7. // 八方向   
  8. #define DIR 8   
  9. int dir[DIR][2] = { {2,1}, {1,2}, {-1,2}, {-2,1}, {-2,-1}, {-1,-2}, {1,-2}, {2,-1} };   
  10.     
  11. int mz[N][N];   
  12. bool flag;   
  13. int sx, sy;   
  14.     
  15. /**  
  16. * 遍历算法  
  17. * 输入: 起点坐标  
  18. */  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值