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;

}

};

相关推荐
葫三生10 分钟前
三生原理范畴语法表明中国哲学可为算法母语
人工智能·深度学习·算法·transformer
D_FW18 分钟前
数据结构第五章:树与二叉树
数据结构·算法
WHS-_-202231 分钟前
Tx and Rx IQ Imbalance Compensation for JCAS in 5G NR
javascript·算法·5g
_OP_CHEN36 分钟前
【从零开始的Qt开发指南】(二十三)Qt 界面优化之 QSS 实战指南:从入门到精通,让你的界面颜值飙升!
开发语言·c++·qt·前端开发·界面美化·qss·客户端开发
余瑜鱼鱼鱼37 分钟前
Java数据结构:从入门到精通(九)
数据结构
float_六七40 分钟前
设备分配核心数据结构全解析
linux·服务器·数据结构
HellowAmy41 分钟前
我的C++规范 - 跳跃的对象
开发语言·c++·代码规范
jinmo_C++42 分钟前
Leetcode_59. 螺旋矩阵 II
算法·leetcode·矩阵
夏鹏今天学习了吗43 分钟前
【LeetCode热题100(81/100)】零钱兑换
算法·leetcode·职场和发展
lucky-billy1 小时前
架构设计 - std::forward 条件转换配合万能引用(T&&)来实现完美转发
c++·完美转发·forward·万能引用