public class Queen {
private static final int queenNum = 8;
private static final int[][] Checkerboard = new int[queenNum][queenNum];
private static int count = 0;
public static final void show() {
System.out.println("第" + (++count) + "次摆法");
for (int i = 0; i < queenNum; i++) {
for (int j = 0; j < queenNum; j++) {
System.out.print(Checkerboard[i][j] + " ");
}
System.out.println("");
}
}
public static final boolean check(int row, int col) {
for (int i = row - 1; i >= 0; i--) {
if (Checkerboard[i][col] == 1)
return false;
}
for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
if (Checkerboard[i][j] == 1)
return false;
}
for (int i = row - 1, j = col + 1; i >= 0 && j < queenNum; i--, j++) {
if (Checkerboard[i][j] == 1)
return false;
}
return true;
}
public static final void play(int row) {
for (int i = 0; i < queenNum; i++) {
if (check(row, i)) {
Checkerboard[row][i] = 1;
if (row == queenNum - 1) {
show();
} else {
play(row + 1);
}
Checkerboard[row][i] = 0;
}
}
}
public static void main(String[] args) {
play(0);
}
}