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;

}

};

相关推荐
独自破碎E4 小时前
LeetCode 381: O(1) 时间插入、删除和获取随机元素 - 允许重复
java·算法·leetcode
Miraitowa_cheems5 小时前
LeetCode算法日记 - Day 81: 最大子数组和
java·数据结构·算法·leetcode·决策树·职场和发展·深度优先
徐子童5 小时前
数据结构---优先级队列(堆)
java·数据结构·面试题·优先级队列··topk问题
学编程就要猛5 小时前
数据结构初阶:Java泛型
数据结构·1024程序员节
冯诺依曼的锦鲤5 小时前
算法练习:前缀和专题
开发语言·c++·算法
闭着眼睛学算法5 小时前
【双机位A卷】华为OD笔试之【哈希表】双机位A-跳房子I【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·c++·python·算法·华为od·散列表
开发者驿站5 小时前
2025年保姆级C++环境配置教程(Windows/macOS双平台)
c++·windows·macos
辰尘_星启6 小时前
『CMake』关于使用CMake构建项目时的现代/传统指令
c++·架构·系统·cmake·项目·构建
自信150413057596 小时前
初学者小白复盘15之指针(4)
c语言·数据结构·算法