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

LeetCode52 N-Queens II

时间:2016-09-09 23:51:58      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

题目:

Follow up for N-Queens problem.

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

技术分享

 

分析:

跟昨天的题目一样的思路也能做,不知道为什么叫follow-up,明天再来研究一下解法优化。

代码:

 1 class Solution {
 2 private:
 3     int result = 0;
 4     void helper(vector<string>& v, int row, int n) {
 5         for (int i = 0; i < n; ++i) {
 6             v[row][i] = Q;
 7             if (isValid(v, row, i, n)) {
 8                 if (row == n - 1) {
 9                     result++;
10                     v[row][i] = .;
11                     return;
12                 }
13                 helper(v, row + 1, n);
14             }
15             v[row][i] = .;
16         }
17     }
18     bool isValid (const vector<string>& v, int x, int y, int n) {
19         for (int i = 0; i < x; ++i) {
20             if (v[i][y] == Q) {
21                 return false;
22             }
23         }
24         for(int i = x - 1, j = y - 1; i >= 0 && j >= 0; i--,j--) {
25             if(v[i][j] == Q) {
26                 return false;
27             }
28         }
29         for(int i = x - 1, j = y + 1; i >= 0 && j < n; i--,j++){
30             if(v[i][j] == Q) {
31                 return false;
32             }
33         }
34         return true;
35     }
36 public:
37     int totalNQueens(int n) {
38         vector<string> v(n, string(n, .));
39         helper(v,0,n);
40         return result;
41     }
42 };

 

LeetCode52 N-Queens II

标签:

原文地址:http://www.cnblogs.com/wangxiaobao/p/5858195.html

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