用java解决八皇后的问题
时间: 2023-03-21 07:01:05 浏览: 81
java解八皇后问题
4星 · 用户满意度95%
八皇后问题是一个古老的棋盘游戏,要求在一个 8x8 的棋盘上放置八个皇后,使得它们互不攻击,即任意两个皇后不能处于同一行、同一列或同一对角线上。
Java 是一门适合用来解决这类问题的语言,因为它具有良好的面向对象特性和程序设计能力。下面是一个简单的 Java 程序,用于解决八皇后问题:
```
public class Queen {
static int[] result = new int[8]; // 全局成员,下标表示行,值表示 queen 存储在哪一列
public static void cal8queens(int row) { // 调用方式:cal8queens(0);
if (row == 8) { // 8 个棋子都放置好了,打印结果
printQueens(result);
return;
}
for (int column = 0; column < 8; ++column) {
if (isOk(row, column)) {
result[row] = column;
cal8queens(row + 1);
}
}
}
private static boolean isOk(int row, int column) {//判断 row 行 column 列放置是否合法
int leftup = column - 1, rightup = column + 1;
for (int i = row - 1; i >= 0; --i) { // 逐行往上考虑每一行
if (result[i] == column) return false; // 第 i 行的 column 列有棋子吗?
if (leftup >= 0) { // 考虑左上对角线:第 i 行 leftup 列有棋子吗?
if (result[i] == leftup) return false;
}
if (rightup < 8) { // 考虑右上对角线:第 i 行 rightup 列有棋子吗?
if (result[i] == rightup)
阅读全文