源程序关键是理解回溯和递归的实现,优化后的程序(加入对ArrayList容器的排序)主要理解贪心算法的思想:每一步都选当前最优的选择,这个马踏棋盘的最优选择是每一步都选当前这一步下一步的选择最少的那一步走,可以省略很多回溯。
package HorseChessBoard;
import java.awt.*;
import java.util.ArrayList;
import java.util.Comparator;
/**
* @author pdzz
* @create 2019-12-03 15:00
*/
public class HorseChessBoard {
private static int X;
private static int Y;
//创建一个数组标记棋盘的各个位置是否被访问过。
private static boolean[] visited;
//使用一个属性,标记是否棋盘的所有位置都被访问过。
private static boolean finished;
public static void main(String[] args) {
X = 8;
Y = 8;
int row = 1;
int column = 1;
int[][] chessBoard = new int[X][Y];
visited = new boolean[X * Y];
long start = System.currentTimeMillis();
traversalChessboard(chessBoard,row - 1,column - 1,1);
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start));
for (int i = 0