java 八皇后问题
时间: 2024-01-12 12:21:57 浏览: 73
以下是Java解决八皇后问题的代码示例:
```java
public class EightQueens {
private static final int SIZE = 8; // 棋盘大小
private static int[] queens = new int[SIZE]; // 一维数组表示棋盘,queens[i]表示第i+1行的皇后所在的列
public static void main(String[] args) {
solve(0); // 从第一行开始解决八皇后问题
}
private static void solve(int row) {
if (row == SIZE) { // 找到一个解法
printQueens();
return;
}
for (int col = 0; col < SIZE; col++) {
if (isValid(row, col)) { // 判断当前位置是否可以放置皇后
queens[row] = col; // 放置皇后
solve(row + 1); // 继续解决下一行
}
}
}
private static boolean isValid(int row, int col) {
for (int i = 0; i < row; i++) {
if (queens[i] == col || queens[i] - col == i - row || queens[i] - col == row - i) {
return false; // 判断是否与之前的皇后冲突
}
}
return true;
}
private static void printQueens() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (queens[i] == j) {
System.out.print("Q ");
} else {
System.out.print(". ");
}
}
System.out.println();
}
System.out.println();
}
}
```
阅读全文