51. N-Queens
来源:互联网 发布:手机阿里云os登录 编辑:程序博客网 时间:2024/06/07 03:11
problem:
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 { private: vector<vector<string>>result; bool check(int row,int col, int n,vector<string>m)//检测每行,每列,左右两个斜行 { if (row == 0) return true; int i; int j; for (i = 0; i < row; i++) { if (m[i][col] == 'Q') return false; } i = row - 1; j = col - 1; while (i >= 0 && j >= 0) { if (m[i][j] == 'Q') return false; i--; j--; } i = row - 1; j = col + 1; while (i >= 0 && j < n) { if (m[i][j] == 'Q') return false; i--; j++; } return true; } void add(vector<string>m) { result.push_back(m); } void solve(int row,int n,vector<string>m) { int col; if (row == n )//所有行已经全部放置 { add(m); return; } for (col = 0; col<n; col++) { if (check(row, col,n,m) == true)//查看row行col列 { m[row][col] = 'Q';//放置一枚Q solve(row + 1,n,m);//往下行继续递归放置 m[row][col] = '.';//如果没有达到递归到返回条件,将之前放置的Q取消 } } } public: vector<vector<string>> solveNQueens(int n) { vector<string>m(n,string(n,'.'));//Init solve(0, n,m); return result; } };
0 0
- 51. N-Queens && 52. N-Queens II
- 51. N-Queens/52. N-Queens II
- LeetCode 51. N-Queens
- LeetCode --- 51. N-Queens
- LeetCode 51.N-Queens
- [Leetcode] 51. N-Queens
- 51.N-Queens
- [leetcode] 51.N-Queens
- 51. N-Queens
- [leetcode] 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- leetcode 51. N-Queens
- 【LeetCode】51. N-Queens
- leetcode 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- LeetCode 51. N-Queens
- AT&T汇编格式与Intel汇编格式的比较
- mybatis自动生成mapper+pojo(mapper接口和普通dao)
- Spring Mvc 配置web.xml中的servlet-mapping时遇到的问题
- IDEA中 Unable to compile class for JSP
- [Java面试四]Strust2总结及在面试中的一些问题.
- 51. N-Queens
- Hibernate事物和并发
- React-Native初学者的模拟器调试及真机调试
- [Java面试五]Spring总结以及在面试中的一些问题.
- 深度探索c++对象模型之member function的具现行为
- [Java面试六]SpringMVC总结以及在面试中的一些问题.
- 解决远程连接mysql
- boost高并发网络框架+线程池
- [Java面试八]Hibernate总结以及在面试中的一些问题.