用Java代码写八皇后游戏
时间: 2024-01-29 08:04:17 浏览: 100
八皇后问题是经典的回溯算法问题,以下是一个基于Java的实现代码:
```java
public class EightQueens {
private int[] queens;
public EightQueens() {
queens = new int[8];
}
public void solve() {
placeQueen(0);
}
private void placeQueen(int row) {
if (row == 8) {
printQueens();
return;
}
for (int col = 0; col < 8; col++) {
if (isValidPosition(row, col)) {
queens[row] = col;
placeQueen(row + 1);
}
}
}
private boolean isValidPosition(int row, int col) {
for (int i = 0; i < row; i++) {
if (queens[i] == col || Math.abs(queens[i] - col) == row - i) {
return false;
}
}
return true;
}
private void printQueens() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if (queens[i] == j) {
System.out.print(" Q ");
} else {
System.out.print(" . ");
}
}
System.out.println();
}
System.out.println();
}
public static void main(String[] args) {
EightQueens eightQueens = new EightQueens();
eightQueens.solve();
}
}
```
这个代码使用了递归来解决问题,`placeQueen`方法的目的是放置皇后,如果所有皇后都放置完毕,就调用`printQueens`方法打印出结果。如果当前行没有可用的位置,就回溯到上一行重新放置皇后。`isValidPosition`方法用于检查当前位置是否安全,如果有其他皇后(同一列或者同一对角线)就返回`false`。`printQueens`方法用于打印出结果。
这个代码可以在控制台中打印出八皇后问题的解决方案。
阅读全文