[leetcode]N-Queens
2014-01-11 22:22
211 查看
八皇后,学递归入门题
判重复的技巧,就是对角线
x+y , x-y这样判断两个对角线了,把二维坐标压缩到一维,方便点。。
判重复的技巧,就是对角线
x+y , x-y这样判断两个对角线了,把二维坐标压缩到一维,方便点。。
class Solution { public: bool col[100]; bool d1[100]; // i + j bool d2[100]; // i - j + n int cnt[100]; void nque(vector<vector<string> >& ans , int n , int dep) { if(dep >= n) { vector<string> xx(n); for(int i = 0 ; i < n ; i++) { string tmp = string(n , '.'); tmp[cnt[i]] = 'Q'; xx[i] = tmp; } ans.push_back(xx); return ; } for(int i = 0 ; i < n ; i++) { if(col[i] && d1[dep+i] && d2[dep-i+n]) { cnt[dep] = i; col[i] = false; d1[dep+i] = false; d2[dep-i+n] = false; nque(ans , n , dep + 1); col[i] = true; d1[dep+i] = true; d2[dep-i+n] = true; } } } vector<vector<string> > solveNQueens(int n) { memset(col , true , sizeof(col)); memset(d1 , true , sizeof(d1)); memset(d2 , true , sizeof(d2)); vector<vector<string> > ans; nque(ans , n , 0); return ans; } };
相关文章推荐
- LeetCode 51. N-Queens
- 【一天一道LeetCode】#51. N-Queens
- leetcode 51. N-Queens
- LeetCode N-Queens
- LeetCode51 N-Queens
- [LeetCode] Anagrams、N-Queens
- leetcode -- N-Queens
- 【LeetCode】51. N-Queens
- [leetcode]51. N-Queens
- N-Queens LeetCode OJ
- [Leetcode] 51. N-Queens 解题报告
- LeetCode --- 51. N-Queens
- LeetCode 51. N-Queens
- Leetcode 51. N-Queens (Hard) (cpp)
- LeetCode 50 N-Queens
- [LeetCode] N-Queens
- [LeetCode] N-Queens N皇后问题
- LeetCode: N-Queens
- 51.leetcode N-Queens(hard)[递归回溯剪枝]
- LeetCode-N-Queens