62,626
社区成员
发帖
与我相关
我的任务
分享public class KT {
public static void main(String[] args) {
int n = args.length == 1 ? Integer.parseInt(args[0]) : 8;
board = new int[n][n];
knightsrun(0,0,1);
}
public static boolean valid(int x, int y){
if (0<=x && x<=7 && 0<=y && y<=7 && board[x][y] == 0){
return true;
}
return false;
}
public static void knightsrun(int row, int column, int step){
int jump [][] ={
{1,2},{2,1},{-1,2},{-2,1},{1,-2},{2,-1},{-1,-2},{-2,-1}
};
board[row][column]=step;
if (step == 64){
print();
return;
}
for (int i = 0; i < jump.length; ++i){
int[] v = jump[i];
int nextx = row + v[0];
int nexty = row + v[1];
if (valid(nextx, nexty)){
knightsrun(nextx, nexty, step+1);
}
}
}
public static void print(){
for(int[] i : board){
int x = i[i.length-1];
for (int j : i){
System.out.print(board[x][j]);
}
System.out.println();
}
}
public static int[][] board;
}