马踏棋盘游戏(骑士周游问题)
马踏棋盘游戏链接
分析:
在8×8的棋盘中,“马”走“日”字走遍整个棋盘。
如图白色初始化位置,黄色点当前马可以走的位置,以此类推。
代码实现:
Java语言实现
import java.awt.*;
import java.util.ArrayList;
import java.util.Comparator;
/**
* 马踏棋盘
* @author mw
*/
public class HorseChessBoard {
// 二维数组表示棋盘
private static int X = 6; // 列 col
private static int Y = 6; // 行 row
private static int[][] chessBoard = new int[Y][X];
private static boolean[] visited = new boolean[X*Y]; //记录某个点是否走过
private static boolean finished = false; // 记录马是否遍历完数组
public static void traversalChessBoard(int[][] chessBoard,int row,int col,int step){
// 先把当前这个点是第几步记录下来
chessBoard[row][col] = step;
// 标记当前点已访问
visited[row*X+col] = true;
// 获取当前这个点可以走的其他点
ArrayList<Point> ps = next(new Point(col, row));
// 使用贪心算法优化
sort(ps);
while (!ps.isEmpty())