题解 | #N皇后问题#

N皇后问题

https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6

class Solution {
public:
    /**
     *DFS深度优先搜索解决
     */
    const int N=20;
    int ans=0,size=0;
    bool col[20]={0},dg[20]={0},udg[20]={0};
    int Nqueen(int n) {
        size=n;
        dfs(0);
        return ans;
    }
    
    void dfs(int x){
        if(x==size){//满足答案,更新答案,并返回
            ans++;
            return;
        }
        for(int i=0;i<size;i++){//将棋盘按行读取
            if(!col[i]&&!dg[x+i]&&!udg[-x+i+size]){
                col[i]=dg[x+i]=udg[-x+i+size]=true;//更新状态
                dfs(x+1);//递归
                col[i]=dg[x+i]=udg[-x+i+size]=false;//恢复现场
            }
        }
    }
};

全部评论

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务