zoukankan      html  css  js  c++  java
  • lintcode 中等题:N Queens II N皇后问题 II

    题目:

    根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。

    样例

    比如n=4,存在2种解决方案

    解题:

    和上一题差不多,这里只是求数量,这个题目定义全局变量,递归的时候才能保存结果,参考程序

    java程序:

    class Solution {
        /**
         * Calculate the total number of distinct N-Queen solutions.
         * @param n: The number of queens.
         * @return: The total number of distinct solutions.
         */
        int result = 0;
        int[] cols;
        public int totalNQueens(int n) {
            //write your code here
            cols = new int [n];
            result = 0;
            DFS(n,0);
            return result;
        }
        
        public void DFS(int n,int row){
            if(n == row){
                result ++;
                return;
            }else{
                for(int i=0;i<n;i++){
                    cols[row] = i;
                    if(isValid(row))
                        DFS(n,row+1);
                }
            }
        }
        public boolean isValid(int row){
            for(int i=0;i<row;i++)
                if(cols[i]==cols[row] || Math.abs(cols[i]-cols[row])== row - i )
                    return false;
            return true;
        }
    };
    View Code

    总耗时: 1202 ms

  • 相关阅读:
    系统引导管理器GRUB,为初学者指南
    PHPBB安装
    python的装饰器
    PIL的问题解决
    python的小技巧
    强烈推荐instagram的ppt
    新的一天
    OpenStack介绍
    ansible自动化运维工具
    .net连oracle的问题
  • 原文地址:https://www.cnblogs.com/bbbblog/p/4910026.html
Copyright © 2011-2022 走看看