[leetcode刷题系列]N-Queens
2013-08-04 00:34
441 查看
经典题目了, 递归搜索就行了
class Solution { const static int MAXN = 100; bool col[MAXN], add[MAXN], minus[MAXN]; int ans[MAXN]; void dfs(int now, int n, vector<vector<string> >& ret){ if(now >= n){ vector<string> vs; for(int i = 0; i < n; ++ i){ string s = ""; for(int j = 0; j < n; ++ j) if(j == ans[i]) s += 'Q'; else s += '.'; vs.push_back(s); } ret.push_back(vs); return ; } for(int i = 0; i < n; ++ i){ if(!col[i] && !add[now + i] && !minus[now - i + n]){ col[i] = true; add[now + i] = true; minus[now - i + n] = true; ans[now] = i; dfs(now + 1, n, ret); col[i] = false; add[now + i] = false; minus[now - i + n] = false; } } } public: vector<vector<string> > solveNQueens(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function memset(col, 0x00, sizeof(col)); memset(add, 0x00, sizeof(add)); memset(minus, 0x00, sizeof(minus)); vector<vector<string> > ret; dfs(0, n, ret); return ret; } };
相关文章推荐
- leetcode—N-Queens系列
- [leetcode刷题系列]N-Queens 2
- Leetcode N-Queens系列
- leetcode系列(3)--Remove Duplicates from Sorted List II
- LeetCode-51&52.N-Queens
- LeetCode Online Judge 题目C# 练习 - N-Queens
- LeetCode-难题集之Best_Time_to_Buy_and_Sell_Stock系列
- 【LeetCode】N-Queens II && 【九度】题目1254:N皇后问题
- LeetCode-51. N-Queens和LeetCode-52. N-Queens II
- 算法系列(5) leetcode350
- N-Queens II N皇后问题(有几种放法)@LeetCode
- [LeetCode]N-Queens
- LeetCode | N-Queens
- 算法系列(20) Leetcode 575. Distribute Candies
- leetcode hard模式专杀之51. N-Queens
- Leetcode House Robber系列
- 【LeetCode】 Pascal's Triangle 系列
- [Leetcode刷题总结系列][Dynamic programming]198. House Robber
- [LeetCode系列] 二叉树最大深度求解问题(C++递归解法)
- 【Leetcode】252,253 meeting room系列 区间问题