zoukankan      html  css  js  c++  java
  • 9.9---n皇后问题(CC150)

    思路:首先写一个检查能不能摆的函数。boolean checkValid(int[] columns,int row1, int column1);意思是row1行摆在column1列可不可以。

    然后是place函数。第一个参数row表示现在摆第几行。第一行可以摆n次位置,然后往下也是8ci。也就是相当于8^8次检查。如果能摆了,往下一行,如果不能摆往后移一列。当row>8说明摆好了。那么计数器+1.

    答案:

    public class Solution{
        
        public static void main(String[] args){
    
            System.out.println(nQueens(8));
        }
        public static int nQueens(int n) {
            // write code here
            int[] columns = new int[n];
            int[] a = new int[1];
            placeQueens(n,0,columns,a);
            return a[0];
        }
        public static void placeQueens(int n,int row, int[] columns,int[] a){
            if(row == n){
                a[0]++;
            }else{
                for(int col = 0; col < n; col++ ){
                    if(checkValid(columns,row,col)){
                        columns[row] = col;//放皇后
                        placeQueens(n,row + 1,columns,a);
                    }
                }
            }
        }
        
        
        public static boolean checkValid(int[] columns, int row1, int column1) {
            for (int row2 = 0; row2 < row1; row2++) {
                int column2 = columns[row2];
                if (column1 == column2) { 
                    return false;
                }
                int columnDistance = Math.abs(column2 - column1); 
                int rowDistance = row1 - row2; // row1 > row2, so no need to use absolute value
                if (columnDistance == rowDistance) {
                    return false;
                }
            }
            return true;
        }
    }
  • 相关阅读:
    架构基础-容量评估
    golang版本实现版本号比较-从易到解决bug
    数组模拟栈
    稀疏数组
    密码生成器
    01-gopsutil包使用
    02从零开始学习GO语言--标识符、关键字、变量和常量
    Go语言简介
    从零开始学习GO语言-搭建Go语言开发环境-快速开发入门第一个小程序
    ES6学习总结之 Module
  • 原文地址:https://www.cnblogs.com/yueyebigdata/p/5098045.html
Copyright © 2011-2022 走看看