n-queens
来源:互联网 发布:mac air 13寸 长宽 编辑:程序博客网 时间:2024/06/03 22:39
题目:
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> > solveNQueens(int n) { string str; for(int i=0;i<n;i++) str.push_back('.'); vector<string> vec; int a[n]; for(int i=0;i<n;i++) vec.push_back(str); vector<vector<string> > res; Back(n,0,res,vec,a); return res; } void Back(int n,int t,vector<vector<string> > &res,vector<string> vec,int *a) { if(n == t) { res.push_back(vec); return; } for(int i=0;i<n;i++) { a[t] = i; if(Push(t,a)) { vec[t][i] = 'Q'; Back(n,t+1,res,vec,a); vec[t][i] = '.'; } } } bool Push(int m,int a[]) { bool flag = true; for(int i=0;i<m;i++) { if(a[i] == a[m] || abs(a[m]-a[i]) == (m-i)) { flag = false; break; } } return flag; }};
点评:
N皇后不能再一条直线,不能对角,即坐标绝对值不能相等,递归求解
阅读全文
0 0
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- Java MongoDB非框架开发基础篇
- MySQL 表分区
- C++
- 21天学通python——第二天
- css cursor鼠标指针光标样式default pointer hand url
- n-queens
- Android开发 之 矢量图的兼容问题
- 苹果发布全新旗舰,对国内手机市场将造成什么影响?
- UOJ 264 NOIP2016 DAY2 T2 浅谈队列单调性及辅助队列时间戳
- [LintCode]172.删除元素
- PHP微信支付开发过程,分享给大家;供参考
- #!/bin/bash和#!/bin/sh
- Sublime Text3 3143 以前注册码失效的问题
- scala-1