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;

}

};

相关推荐
yunyun321237 分钟前
跨语言调用C++接口
开发语言·c++·算法
m0_5180194810 分钟前
C++中的装饰器模式变体
开发语言·c++·算法
xushichao198917 分钟前
高性能密码学库
开发语言·c++·算法
偷懒下载原神17 分钟前
【linux操作系统】信号
linux·运维·服务器·开发语言·c++·git·后端
m0_5180194819 分钟前
C++代码混淆与保护
开发语言·c++·算法
m0_5698814722 分钟前
C++中的智能指针详解
开发语言·c++·算法
blackicexs25 分钟前
第九周第三天
算法
自信1504130575934 分钟前
选择排序算法
c语言·数据结构·算法·排序算法
2401_8735449235 分钟前
基于C++的游戏引擎开发
开发语言·c++·算法
add45a36 分钟前
C++中的组合模式
开发语言·c++·算法