[LeetCode] 51. N-Queens
2016-07-22 17:52
543 查看
思路:
DFS. 主要思路是从上向下一行一行添加Queen. 添加时查看该列上方是否有Queen, 该格子左上45度斜对角线和右上45度斜对角线有无Queen即可.
DFS. 主要思路是从上向下一行一行添加Queen. 添加时查看该列上方是否有Queen, 该格子左上45度斜对角线和右上45度斜对角线有无Queen即可.
bool isValid(vector<string>& board, int row, int col) { // 判断此列上方有没有Queen for (int i = 0; i < row; i++) if (board[i][col] == 'Q') return false; // 判断右上延伸对角线有没有Queen for (int i = row - 1, j = col + 1; i >= 0 && j < board[0].size(); i--, j++) if (board[i][j] == 'Q') return false; // 判断左上延伸对角线有没有Queen for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) if (board[i][j] == 'Q') return false; return true; } void dfs(vector<vector<string>>& res, vector<string>& board, int row, int& n) { if (row == n) return res.push_back(board); for (int col = 0; col < n; col++) { if (isValid(board, row, col)) { board[row][col] = 'Q'; dfs(res, board, row + 1, n); board[row][col] = '.'; } } } vector<vector<string>> solveNQueens(int n) { vector<vector<string>> res; if (! n) return res; vector<string> board(n, string(n, '.')); dfs(res, board, 0, n); return res; }
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- leetcode----Longest Substring Without Repeating Characters
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap