@Getter
class Queen {
private int[][] board = new int[1024][1024];
private int count = 0;
private int sum = 0;
public int cal(int n, int x, int y) {
for (int j = x; j < n; j++) {
if (checkBoard(j, y, n)) {
board[y][j] = 1;
count = count + 1;
if (count == n) {
sum = sum + 1;
for (int row = 0; row < n; row++) {
for (int col = 0; col < n; col++) {
System.out.print(board[row][col] + "\t");
}
System.out.println();
}
System.out.println();
}
cal(n, 0, y + 1);
board[y][j] = 0;
count = count - 1;
}
}
return 1;
}
private boolean checkBoard(int x, int y, int n) {
int tempX = x;
int tempY = y;
// |方向判断
while (tempY > 0) {
tempY--;
if (board[tempY][tempX] == 1) {
return false;
}
}
tempX = x;
tempY = y;
// /方向判断
while (tempX < n - 1 && tempY > 0) {
tempX++;
tempY--;
if (board[tempY][tempX] == 1) {
return false;
}
}
tempX = x;
tempY = y;
// \方向判断
while (tempX > 0 && tempY > 0) {
tempX--;
tempY--;
if (board[tempY][tempX] == 1) {
return false;
}
}
return true;
}
}
java记录-N皇后递归
于 2022-08-09 16:10:13 首次发布