LeetCode:51. N 皇后

class Solution {

public:

vector<vector<string>> solveNQueens(int n) {

vector<string> board(n, string(n, '.'));

backtrack(board,0);

return res;

}

private:

vector<vector<string>>res;

void backtrack(vector<string>& board,int row){

if(row==board.size()){

res.push_back(board);

return ;

}

int n=board[row].size();

for(int con=0;con<n;con++){

if(!isvalid(board,row,con)){

continue;

}

board[row][con]='Q';

backtrack(board,row+1);

board[row][con]='.';

}

}

bool isvalid(const vector<string>& board,int row,int con){

int n=board.size();

//检查列之间有没有冲突

for(int i=0;i<row;i++){

if(board[i][con]=='Q')

return false;

}

//检查左对角线是否有冲突

for(int i=row-1,j=con-1;i>=0&&j>=0;i--,j--){

if(board[i][j]=='Q')

return false;

}

//检查右对角线是否有冲突

for(int i=row-1,j=con+1;i>=0&&j<n;i--,j++){

if(board[i][j]=='Q')

return false;

}

return true;

}

};

相关推荐
wadesir24 分钟前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
yugi98783843 分钟前
基于MATLAB实现协同过滤电影推荐系统
算法·matlab
TimberWill43 分钟前
哈希-02-最长连续序列
算法·leetcode·排序算法
Morwit1 小时前
【力扣hot100】64. 最小路径和
c++·算法·leetcode
leoufung1 小时前
LeetCode 373. Find K Pairs with Smallest Sums:从暴力到堆优化的完整思路与踩坑
java·算法·leetcode
OliverH-yishuihan1 小时前
开发linux项目-在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”
linux·c++·windows
七禾页丫1 小时前
面试记录12 中级c++开发工程师
c++·面试·职场和发展
wifi chicken2 小时前
数组遍历求值,行遍历和列遍历谁更快
c语言·数据结构·算法
qingyun9892 小时前
深度优先遍历:JavaScript递归查找树形数据结构中的节点标签
前端·javascript·数据结构
胡楚昊2 小时前
NSSCTF动调题包通关
开发语言·javascript·算法