leetcode---N-Queens---回溯
来源:互联网 发布:剑雨逍遥坐骑进阶数据 编辑:程序博客网 时间:2024/06/05 20:29
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..”]
]
class Solution {public: vector<vector<string>> ans; bool ok(int depth, int col, int n, vector<string> &tmp) { int sum = col + depth; int c = 0; for(int i=0; i<depth; i++) { c = depth - i; if(tmp[i][col] == 'Q' || tmp[i][sum-i] == 'Q' || tmp[i][col-c] == 'Q') return false; } return true; } void dfs(int depth, vector<string> &tmp, int n) { if(depth >= n) { ans.push_back(tmp); return; } for(int j=0; j<n; j++) { tmp[depth][j] = 'Q'; if(ok(depth, j, n, tmp)) dfs(depth+1, tmp, n); tmp[depth][j] = '.'; } } vector<vector<string>> solveNQueens(int n) { vector<string> tmp; for(int i=0; i<n; i++) { string s = ""; for(int j=0; j<n; j++) s += '.'; tmp.push_back(s); } dfs(0, tmp, n); return ans; }};
0 0
- leetcode---N-Queens---回溯
- LeetCode 51. N-Queens 回溯
- LeetCode OJ - N-Queens 回溯法
- 【Leetcode】51. N-Queens(回溯)
- leetcode 51 N-Queens 回溯 万能结构
- 【LeetCode】N-Queens II N皇后问题 回溯法
- N-Queens And N-Queens II [LeetCode] + Generate Parentheses[LeetCode] + 回溯法
- leetcode -- N-Queens I&II,经典回溯,再看
- 51.leetcode N-Queens(hard)[递归回溯剪枝]
- leetcode 51. N-Queens 回溯算法的应用
- 【LeetCode】N-Queens && N-Queens II
- leetcode N-Queens & N-Queens II
- Leetcode: N-Queens && N-Queens II
- 【Leetcode】【python】N-Queens/N-Queens II
- LeetCode: N-Queens II
- LeetCode: N-Queens
- LeetCode : N-Queens
- LeetCode : N-Queens II
- android下导入类似百度语音等sdk的环境配置
- JDBC访问数据库标准语法
- android studio使用的一些细节以及注意事项
- swift 监听按钮的点击不能用Private
- mongoDB——安装和启动
- leetcode---N-Queens---回溯
- C++中vector删除指定位置的元素
- MPU和MCU的区别和选择
- 关于Android导入开源项目:Error:Unable to load class 'org.gradle.api.publication.maven.internal.DefaultMavenFa
- iOS开发之在客服开发之QQ, 在APP中打开指定qq聊天界面的方法
- swift分类extension
- Java编程思想学习总结连载(1)-写在前面
- Oracle高级查询之CONNECT BY
- Spring集合 (List,Set,Map,Properties) 实例