<LeetCode OJ> 52. N-Queens II

原创 2016年01月26日 11:12:57

52. N-Queens II

My Submissions
Total Accepted: 39648 Total Submissions: 103862 Difficulty: Hard

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

Subscribe to see which companies asked this question

Hide Tags
 Backtracking
Show Similar Problems

分析:

就是八皇后问题,最典型的回溯法问题

依次摆放1到N个皇后,每个皇后所在行均从第一列到第N列试探性摆放:每摆一次检查是否与已经摆好的皇后冲突,如果不冲突继续摆下一个皇后,如果冲突以后的皇后均不在以当前皇后的位置继续摆下去,即返回上一个皇后的下一个位置继续摆,

本文参考:<C/C++算法>回溯法及其常见面试题

class Solution {
public:
    //位置冲突算法   
    bool isConflict(int a[], int n)//a位置数组,n皇后个数   
    {  
        int i = 0, j = 0;  
        for (i = 2; i <= n; ++i)//i:位置   
        {
            for (j = 1; j <= i - 1; ++j)//j:位置   
            {
                if ((a[i] == a[j]) || (abs(a[i] - a[j]) == i - j))//1:在同一列上;2:在对角线上   
                    return false;   //冲突   
            }
        }
        return true;//不冲突   
    } 
    //八皇后问题:回溯算法(递归版)   
    void QueensN(int a[],int k,int n) //参数k:递归摆放第k个皇后   
    {  
        int i = 0;  
        if (k > n)      //k>n:即k>8表示最后一个皇后摆放完毕   
            ++cnt;  
        else{  //8个皇后未全部摆放完毕 
            for (i = 1; i <= n; ++i)//摆放第k个皇后时(转下一行)   
            { //依次从列顶端开始搜索,一直到列底端,直到找到合适位置,如果未找到,自动返回上层递归(回溯)   
                a[k] = i;  
                if (isConflict(a, k))  
                    QueensN(a,k + 1,n);//不冲突,递归摆放下一个皇后  
            }  
        }  
    } 
    int totalNQueens(int n) {
        cnt=0;
        int a[9]={0};
        QueensN(a,1,n);
        return cnt;
    }
private:
    int cnt;
};





注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/50585984

原作者博客:http://blog.csdn.net/ebowtang

版权声明:本文为EbowTang原创文章,后续可能继续更新本文。如果转载,请务必复制本文末尾的信息!

LeetCode 52. N-Queens II(N皇后)

原题网址:https://leetcode.com/problems/n-queens-ii/ Follow up for N-Queens problem. Now, instead...
  • jmspan
  • jmspan
  • 2016年05月21日 06:27
  • 288

leetCode 52.N-Queens II (n皇后问题II) 解题思路和方法

N-Queens II Follow up for N-Queens problem. Now, instead outputting board configurations, ...
  • xygy8860
  • xygy8860
  • 2015年07月13日 14:08
  • 1123

LeetCode 51. N-Queens和52. N-Queens II的位运算解法

LeetCode 51. N-Queens和52. N-Queens II的位运算解法
  • u011433274
  • u011433274
  • 2016年09月09日 17:00
  • 431

[leetcode] 52. N-Queens II 解题报告

题目链接:https://leetcode.com/problems/n-queens-ii/ Follow up for N-Queens problem. Now, instead outp...
  • qq508618087
  • qq508618087
  • 2015年12月21日 14:38
  • 516

[leetcode] 52. N-Queens II

Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe...
  • TstsUgeg
  • TstsUgeg
  • 2015年11月24日 10:14
  • 208

LeetCode||52. N-Queens II

Follow up for N-Queens problem. Now, instead outputting board configurations, return the total nu...
  • Lingfu74
  • Lingfu74
  • 2017年11月07日 18:17
  • 41

leetcode 52. N-Queens II

题意 N皇后问题 题解 使用dfs。 代码class Solution { public: int result; bool isOK(vector cols, int pos...
  • u010560443
  • u010560443
  • 2016年04月07日 21:19
  • 171

【LeetCode】52. N-Queens II

问题描述https://leetcode.com/problems/n-queens-ii/#/descriptionFollow up for N-Queens problem.Now, inste...
  • zgljl2012
  • zgljl2012
  • 2017年05月14日 11:30
  • 598

LeetCode 52. N-Queens II

思路同LeetCode 51. N-Queens 代码: class Solution { public: int totalNQueens(int n) { ...
  • u014674776
  • u014674776
  • 2014年07月03日 03:22
  • 596

LeetCode --- 52. N-Queens II

题目链接:N-Queens II Follow up for N-Queens problem. Now, instead outputting board configurations, ret...
  • makuiyu
  • makuiyu
  • 2015年03月07日 10:49
  • 1140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<LeetCode OJ> 52. N-Queens II
举报原因:
原因补充:

(最多只允许输入30个字)