您的位置:首页 > 产品设计 > UI/UE

LeetCode --- 52. N-Queens II

2015-03-07 10:49 405 查看
题目链接:N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
这道题的要求是返回N皇后问题总共有多少不同情况。
N-Queens问题一样,同样的思路,至少这个是统计数量而已,代码也大部分都相同。
时间复杂度:O(???)
空间复杂度:O(n)

[code] 1 class Solution
 2 {
 3 public:
 4     int totalNQueens(int n)
 5     {
 6         vector<int> vi(n);
 7         int res = 0;
 8         solveNQueens(res, vi, n, 0);
 9         return res;
10     }
11     
12 private:
13     void solveNQueens(int &res, vector<int> &vi, int n, int c)
14     {
15         if(c == n)
16         {
17             ++ res;
18             return;
19         }
20 
21         for(vi[c] = 0; vi[c] < n; ++ vi[c])
22             if(safe(vi, n, c))
23                 solveNQueens(res, vi, n, c + 1);
24     }
25 
26     bool safe(vector<int> &vi, int n, int c)
27     {
28         for(int i = 0; i < c; ++ i)
29             if(vi[i] == vi[c] || abs(vi[c] - vi[i]) == abs(c - i))
30                 return false;
31         return true;
32     }
33 };


转载请说明出处:LeetCode --- 52. N-Queens II
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: