LeetCode N-Queens
2014-03-16 10:03
447 查看
N-Queens
Total Accepted: 5516 TotalSubmissions: 21906
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where
'Q'and
'.'both
indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."] ]
回溯+开数组记录之前选择
>.<这里不知道n的范围数组真的不好搞,无奈只有new一个了。
注意关于C++new对内存初始化的情况,http://hi.baidu.com/maxy218/item/8cd098256327c1829d63d1ca
实际测试下来,加不加(),运行结果都是正确的,也就是说都初始化为0了,但是初始化是个好习惯!
然后由于返回值是字符串,于是对string构造函数又长了见识
string (size_t n, char c);
(6) fill constructor
Fills the string with n consecutive copies of character c.
class Solution { int *rec; bool *row, *l, *r; public: vector<vector<string> > solveNQueens(int n) { vector<vector<string> > ans; rec = new int (); row = new bool (); l = new bool[2 * n](); r = new bool[2 * n](); dfs(0, n, ans); delete(rec); delete(row); delete(l); delete(r); return ans; } void dfs(int s, int n, vector<vector<string> >& ans) { if (s == n) { vector<string> vec; for (int i = 0; i < n; i++) { string str(n, '.'); str[rec[i]] = 'Q'; vec.push_back(str); } ans.push_back(vec); return; } for (int i = 0; i < n; i++) { if (!row[i] && !l[s + i] && !r[s - i + n - 1]) { rec[s] = i; row[i] = true; l[s + i] = true; r[s - i + n - 1] = true; dfs(s + 1, n, ans); row[i] = false; l[s + i] = false; r[s - i + n - 1] = false; } } } };
相关文章推荐
- [LeetCode] N-Queens
- [LeetCode]51 N-Queens
- [LeetCode]N-Queens I and II
- leetcode[50] N-Queens
- [LeetCode] N-Queens
- LeetCode:N-Queens
- Leetcode: N-Queens
- leetcode之路051 N-Queens
- leetCode 51. N-Queens | 回溯问题(N皇后问题) | hard
- [Leetcode] n queens n皇后问题
- 个人记录-LeetCode 51. N-Queens
- [leetcode] N-Queens
- LeetCode 51. N-Queens
- Leetcode: N-Queens
- Leetcode 51. N-Queens
- [Leetcode]N-Queens
- [leetcode javascript解题]N-Queens
- [LeetCode] N-Queens
- LeetCode-51.N-Queens
- leetcode-51. N-Queens