1.算法描述
在 8×8 的棋盘上,用一个马按照马步跳遍整个棋盘,要求每个格子都只跳到一次,求出走过的路径。
2.代码实现
import java.awt.*;
import java.sql.Array;
import java.util.ArrayList;
/**
* @program: 21.骑士周游问题
* @description:
* @author: Zhou Jian
* @create: 2020-08-14 20:13
*/
public class horse {
private static int X; // 矩阵的列
private static int Y; // 矩阵的行
private static boolean[] visited; // 记录棋盘上的点是否被访问过
private static boolean flag; // 访问过,置为true,否则置为false
/**
* 马踏棋盘算法
*
* @param Chess 棋盘,是一个矩阵
* @param row 马所在的行
* @param line 马所在的列
* @param step 走的步数
*/
private static void Horse_Chess(int[][] Chess, int row, int line, int step) {
// 初始化
Chess[row][line] = step;
// 计算马在一维数组中的位置,并且置为已访问
visited[row * X + line] = true;
// 获取当前位置可以走的下一个位置的集合
ArrayList<Point> arr = array(new Point(line, row));
// 遍历集合
while (!arr.isEmpty()) {
// 取出下一个可以访问的位置
Point next_point = arr.remove(0);
// 判断这个节点是否被访问过
if <