【LeetCode】N-Queens
来源:互联网 发布:mg2takemystyle 淘宝 编辑:程序博客网 时间:2024/06/11 04:58
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.."]]思路:经典的n皇后问题,可以参考任何一本算法书。一般是通过回溯法求解。可以记录医用位置和下一次不能使用的左边位置和右边位置,得到可用的位置,然后遍历求出可用的位置,最后得到可用的结果。
class Solution {public: vector<vector<string> > solveNQueens(int n) { vector<vector<string> > res; vector<string> tmp; solveNQueensRe(n,0,0,0,res,tmp); return res; } /*//主要参数列表: n:个数 row:不可用的列位置 ld:不可用的左边位置 rd:不可用的右边位置*/ void solveNQueensRe(int n, int row, int ld, int rd, vector<vector<string> > &res,vector<string> &tmp){ //形成一次答案 if(row == (1<<n)-1){ res.push_back(tmp); return; } int avail = ~(ld | row | rd); //从第一个位置开始生成代码 for(int i = n-1;i>=0;--i){ //记录现在想要开始的位置 int pos = 1<<i; //该位置可用 if(pos&avail){ string s(n,'.'); s[i]='Q'; tmp.push_back(s); // solveNQueensRe(n,row|pos,(ld|pos)<<1,(rd|pos)>>1,res,tmp); tmp.pop_back(); } } }};
0 0
- 【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
- [Leetcode] N-Queens II
- leetcode 72: N-Queens
- LeetCode 38: N-Queens
- 【leetcode】N-Queens II
- 【leetcode】N-Queens
- LeetCode: N Queens II
- [LeetCode]N-Queens
- [LeetCode]N-Queens II
- [leetcode]N-Queens
- [LeetCode] Anagrams、N-Queens
- Leetcode 细节实现 Longest Common Prefix
- NYOJ 62 笨小熊
- 单片机的输入输出接口操作
- HTPC改装19寸2U轻量级机架PC
- 1>e:\驱动编程\项目\myreloadkerneldriver\driver.c(117) : error C2220: warning tre ated as error - no 'objec
- 【LeetCode】N-Queens
- POJ3259
- POJ3463 Sightseeing——最短路的信息附带
- TCP/IP SOCKET HTTP及HTTPS之间的关系及各自特性之总结
- UVa11138 - Nuts and Bolts(二分匹配)
- ios-使用iPad专用API(UISplitViewController)控制器
- java学习笔记day4
- 【转】ZOJ 3816 (伪数位dp+剪枝)||贪心
- ubuntu 源不知还有没有用