import java.util.Scanner;
public class six_2010_2015_2017_2 {
private final static int dx[] = {2, 1, -1, -2};
private final static int dy[] = {1, 2, 2, 1};
// 半个中国象棋5行9列
private final static int X = 6;
private final static int Y = 10;
private static int[][] chessboard = new int[X][Y]; // 棋盘
private final static int visited = 1;
private final static int unvisited = 0;
private static int count = 0; // 记录次数
private static void horseCount(int srcX, int srcY, int destX, int destY) {
if(srcX < 1 || srcX > 5 || srcY < 1 || srcY > 9 || chessboard[srcX][srcY] == 1)
return;
if(srcX == destX && srcY == destY) {
count++;
return;
}
chessboard[srcX][srcY] = visited;
for(int i = 0; i < dx.length; ++i) {
horseCount(srcX+dx[i], srcY+dy[i], destX, destY);
}
chessboard[srcX][srcY] = unvisited;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int destX, destY; // 马要跳到的目的地
System.out.print("请输入M(在1-5之间):");
destX = sc.nextInt();
System.out.print("请输入N(在1-9之间):");
destY = sc.nextInt();
if(destX >= 1 && destX <= 5 && destY >= 1 && destY <= 9) {
horseCount(1, 1, destX, destY);
System.out.println("需要走" + count + "步");
}else {
System.out.println("输入有误!");
}
sc.close();
}
}
转载于:https://my.oschina.net/chenmoxuan/blog/1786702