回溯解八皇后问题

代码:

public class queue {
    //棋盘大小及皇后数量
    static int max=8;
    //正解的集合 下标为行 值为列
    static int[] array=new int[max];
    public static void main(String[] args) {
        queue q = new queue();
        //从0位置开始
        q.check(0);
    }

    private void check(int n){
        if (n==max){
            print();
            return;
        }
        for (int i = 0; i < max; i++) {
            //从0列开始测试位置是否合适
            array[n]=i;
            if (judge(n)){
                //位置不合适就递归判断下一个
                check(n+1);
            }
        }
    }
    private boolean judge(int n){
        //判断此行的皇后和之前行的皇后是否有冲突
        for (int i = 0; i < n; i++) {
            //判断列和斜线 行递增不需要判断
            if (array[n]==array[i]||Math.abs(n-i)==Math.abs(array[n]-array[i])){
                return false;
            }
        }
        return true;
    }

    //输出结果
    private void print(){
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
        System.out.println();
    }
}

 

上一篇:二分题目总结


下一篇:使用npm模块升级工具npm-check-updates