[LeetCode] 52. N-Queens II
来源:互联网 发布:淘宝跳失率多少正常 编辑:程序博客网 时间:2024/05/18 12:34
思路:
维护三个数组, 分别记录同列, 左上对角线, 右上对角线是否有Queen, 对角线数组要2n长, 这样就能装下所有col + row的可能, 比较方便. 主要算法依然是DFS, 很标准.
void dfs(int& res, int row, int& n, vector<bool>& colCheck, vector<bool>& leftDiagCheck, vector<bool>& rightDiagCheck) { if (row == n) { res++; return; } for (int col = 0; col < n; col++) { int leftDiag = col - row + n; int rightDiag = col + row; if (colCheck[col] || leftDiagCheck[leftDiag] || rightDiagCheck[rightDiag]) continue; colCheck[col] = leftDiagCheck[leftDiag] = rightDiagCheck[rightDiag] = true; dfs(res, row + 1, n, colCheck, leftDiagCheck, rightDiagCheck); colCheck[col] = leftDiagCheck[leftDiag] = rightDiagCheck[rightDiag] = false; }}int totalNQueens(int n) { int res = 0; vector<bool> colCheck(n); vector<bool> leftDiagCheck(2 * n); vector<bool> rightDiagCheck(2 * n); dfs(res, 0, n, colCheck, leftDiagCheck, rightDiagCheck); return res;}
0 0
- LeetCode 52. N-Queens II
- LeetCode --- 52. N-Queens II
- LeetCode 52.N-Queens II
- [Leetcode] 52. N-Queens II
- [leetcode] 52.N-Queens II
- [leetcode] 52. N-Queens II
- LeetCode 52. N-Queens II
- leetcode 52. N-Queens II
- LeetCode 52. N-Queens II
- LeetCode 52. N-Queens II
- leetcode.52. N-Queens II
- LeetCode 52. N-Queens II
- [LEETCODE]52. N-Queens II
- [LeetCode] 52. N-Queens II
- leetcode 52. N-Queens II
- leetcode-52. N-Queens II
- leetcode 52. N-Queens II
- LeetCode 52. N-Queens II
- 2016夏季练习——AC自动机
- PyGobject(八)布局容器之Button篇——Gtk.LinkButton
- 跨站点请求伪造
- 最全的常用正则表达式大全
- android studio tabhost基础 多功能时钟app 实现闹钟功能(一)
- [LeetCode] 52. N-Queens II
- Android UI高级之RecyclerView
- SourceTree+OSChina+CocoaPods提交时,Pods提交失败解决办法:
- RecyclerView控件补充
- *** glibc detected *** free(): invalid pointer:解决方法
- 简短的废话
- ORACLE数据库---"ORA-00942: 表或视图不存在 "的原因和解决方法---续
- Design没有API选项
- IEnumerable和IEnumerator