zoukankan      html  css  js  c++  java
  • Java解8皇后问题

    package algs;
    
    /**
     * Author: areful
     * Date: 2018/8/9
     */
    public class Queen8 {
        private static final int MAX_QUEEN = 8;
        private int[] cols = new int[MAX_QUEEN];
        private int num = 0;
    
        private void calc() {
            getArrangement(0);
            System.out.println(MAX_QUEEN + "皇后问题有" + num + "种摆放方法。");
        }
    
        private void getArrangement(int n) {
            boolean[] rows = new boolean[MAX_QUEEN];
            for (int i = 0; i < n; i++) {
                rows[cols[i]] = true;
                int d = n - i;
                if (cols[i] - d >= 0) rows[cols[i] - d] = true;
                if (cols[i] + d <= MAX_QUEEN - 1) rows[cols[i] + d] = true;
            }
            for (int i = 0; i < MAX_QUEEN; i++) {
                if (rows[i]) continue;
                cols[n] = i;
                if (n < MAX_QUEEN - 1) {
                    getArrangement(n + 1);
                } else {
                    num++;
                    printChessBoard();
                }
            }
        }
    
        private void printChessBoard() {
            System.out.println("第" + num + "种走法");
            for (int i = 0; i < MAX_QUEEN; i++) {
                for (int j = 0; j < MAX_QUEEN; j++) {
                    if (i == cols[j]) {
                        System.out.print("0 ");
                    } else
                        System.out.print(". ");
                }
                System.out.println();
            }
        }
    
        public static void main(String[] args) {
            new Queen8().calc();
        }
    }
    

      

  • 相关阅读:
    封装小程序http请求
    ES6为数组做的扩展
    练习题
    二叉树的遍历
    快速搭建vue项目
    收集的前端面试大全
    ios兼容webp格式的图片
    小程序开发API之获取启动参数
    使用HTML编写邮件
    深入理解javascript原型和闭包(9)——this
  • 原文地址:https://www.cnblogs.com/areful/p/10381534.html
Copyright © 2011-2022 走看看