n-queens
来源:互联网 发布:觉知疗法 编辑:程序博客网 时间:2024/06/18 10:14
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: bool judge_quee(string &vec) //判断n个皇后是否在对角线上 { int len=vec.size(); if(len<=1) return true; for(int i=0;i<len;++i) for(int j=i+1;j<len;++j) { if(i-j==vec[i]-vec[j]||j-i==vec[i]-vec[j]) return false; } return true; } vector<vector<string> > solveNQueens(int n) { string vec; for(int i=0;i<n;++i) vec+=(i+'0'); vector<vector<string> > res; recur_pai(res,vec,0); return res; } void recur_pai(vector<vector<string>> &res,string &vec,int begin)//求全排列 { if(begin==vec.size()&&judge_quee(vec)){ vector<string> temp(vec.size(),string(vec.size(),'.')); for(int i=0;i<vec.size();++i) { temp[i][vec[i]-'0']='Q'; } res.push_back(temp); } for(int i=begin;i<vec.size();++i){ swap(vec[begin],vec[i]); recur_pai(res,vec,begin+1); swap(vec[begin],vec[i]); } }};
阅读全文
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
- 二分图——洛谷P3386 【模板】二分图匹
- CodeForces 810C Do you want a date? 【数学】【排序】
- 漫画赏析:Linux 内核到底长啥样
- Django 博客开发教程 16
- android 开机启动桌面程序,launcher模式
- n-queens
- caffe
- [leetcode]95. Unique Binary Search Trees II
- HttpHandler与HttpModule的用处与区别
- 笔记
- [LeetCode]594. Longest Harmonious Subsequence
- 解决eclipse总是building workspace的问题
- 使用Git和Github来管理代码
- httpd.exe 系统错误 api-ms-win-crt-runtime-|1-1-0.dll 解决方案