按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
n 皇后问题 研究的是如何将
n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数
n,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中
'Q'和'.'分别代表了皇后和空位。示例 1:
输入:n = 4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2:
输入:n = 1 输出:[["Q"]]提示:
1 <= n <= 9
- class Solution {
- public:
- vector
> res; - void func(int n,int row,vector
path) - {
- if(n==row)
- {
- res.push_back(path);
- return;
- }
- for(int col=0;col
- {
- if(isValid(row,col,path,n))
- {
- path[row][col]='Q';
- func(n,row+1,path);
- path[row][col]='.';
- }
- }
- }
- bool isValid(int row,int col,vector
&path,int n) - {
- for(int i=0;i
|
- {
- if(path[i][col]=='Q')
- return false;
- }
- for(int i=row-1,j=col-1;i>=0&&j>=0;j--,i--)
- {
- if(path[i][j]=='Q')
- return false;
- }
- for(int i=row-1,j=col+1;i>=0&&j
- {
- if(path[i][j]=='Q')
- return false;
- }
- return true;
- }
- vector
> solveNQueens(int n) { - vector
path(n,string(n,'.')) ; - func(n,0,path);
- return res;
- }
- };
-
相关阅读:
Nginx内存池:外部资源释放和内存池销毁
SpringBoot+Vue实现前后端分离的家政服务平台
大学生网页作业成品——基于HTML网上书城项目的设计与实现
JavaScript知识系列(3)每天10个小知识点
Python 爬虫 AES DES加密反爬
Spark 读取ES采坑系列
es索引同步
史上最全的mysql数据类型汇总(下)
使用公式在Excel中指定列值的变化实现自动间隔着色(不是按照固定的行数)
传输层 TCP 拥塞控制(2):拥塞避免
-
原文地址:https://blog.csdn.net/ghblk/article/details/133749072