⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eightqueen.java

📁 利用java语言简单实现了八皇后问题
💻 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 + -