📄 eightqueen.java
字号:
public class EightQueen {
public final static int M = 8;// 行列数
private int[] order = new int[M];// 棋盘
private int count = 0;// 计数
private boolean detect(int row, int col) {// 检测是否在同一行、同一列、同一斜线上
for (int r = 0; r < row; r++) {
if (col == order[r] // 是否在同一条直线上
|| (Math.abs(row - r) == Math.abs(col - order[r]))) // 是否在同一斜线上
return true;
}
return false;
}
private void display() {// 输出棋盘
count++;
System.out.println("第" + count + "种棋盘:");
for (int row = 0; row < M; row++) {
for (int col = 0; col < M; col++) {
if (col == order[row])
System.out.print("1 ");
else
System.out.print("0 ");
}
System.out.println();
}
System.out.println();
}
public void run() {
run(0);
}
public void run(int row) {// 找出所有可能的组合
if (row >= M) { // 如果大小超过棋盘,表示已经找到了一个可行的组合
display(); // 显示可行的棋盘
return;
}
for (int col = 0; col < M; col++) {
if (detect(row, col)) {// 检测,直到找到一个可行的位置
continue;
}
order[row] = col;// 安排到此位置
run(row + 1); // 继续进行下一行
}
}
public static void main(String[] args) {
new EightQueen().run();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -