码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 52. N皇后 II

时间:2019-05-10 20:40:51      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:++   inf   size   src   bool   path   ali   bsp   解决   

皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

技术图片

 

技术图片

上图为 8 皇后问题的一种解法。

给定一个整数 n,返回 n 皇后不同的解决方案的数量。

示例:

输入: 4
输出: 2
解释: 4 皇后问题存在如下两个不同的解法。
[
 [".Q..",  // 解法 1
  "...Q",
  "Q...",
  "..Q."],

 ["..Q.",  // 解法 2
  "Q...",
  "...Q",
  ".Q.."]
]

 1 class Solution {
 2 public:
 3     
 4     int res = 0;
 5     int size;
 6     vector<int> path;
 7     int totalNQueens(int n) {
 8         size = n;
 9         for(int i = 0;i < n;++i)
10         {
11             path.push_back(-1);
12         }
13         dfs(0);
14         return res;
15     }
16     void dfs(int x)
17     {
18         if(x == size)
19         {
20             res++;
21         }
22         for(int i = 0;i < size; ++i)
23         {
24             if(check(x,i))
25             {
26                 path[x] = i;
27                 dfs(x+1);
28                 path[x] = -1;
29             }
30         }
31     }
32     bool check(int x,int k)
33     {
34         if(x == 0)
35             return true;
36         for(int i = 0;i < x;i++)
37         {
38             if(path[i] == k || abs(i - x) == abs(k - path[i]))
39             {
40                 return false;
41             }
42         }
43         return true;
44     }
45 
46 
47 };

 



LeetCode 52. N皇后 II

标签:++   inf   size   src   bool   path   ali   bsp   解决   

原文地址:https://www.cnblogs.com/Jawen/p/10846450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!