按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
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;
- }
- };
-
相关阅读:
Linux(四)- Linux常用基本命令(帮助命令、文件目录类、搜索查找类、进程管理类)
react18【系列实用教程】memo —— 缓存组件 (2024最新版)
谈一谈SQLite、MySQL、PostgreSQL三大数据库
蓝桥杯双周赛算法心得——通关(哈希+小根堆)
猿创征文|见过的最傲娇的开源管理者,真的气人,SRS视频流方案
KDE(Kernel Density Estimation)(核密度估计)是什么?
R语言survival包clogit函数构建条件logistic回归模型、使用summary函数查看模型汇总统计信息
Nginx 配置指定时间段不提供服务访问 —— 筑梦之路
RabbitMQ的confirm机制
Elasticsearch 8.9 Master节点处理请求源码
-
原文地址:https://blog.csdn.net/ghblk/article/details/133749072