52. N-Queens II

来源:互联网 发布:windows开机启动后黑屏 编辑:程序博客网 时间:2024/05/17 08:10

1、题目描述

输入n,返回n皇后的合法解的数量。


2、思路

回溯


3、代码

    int totalNQueens(int n) {        int ans = 0;        vector<bool>a(2*n-1,false);        vector<bool>b(2*n-1,false);        vector<bool>col(n,false);        dfs(ans,a,b,col,0,n);        return ans;    }    void dfs(int &ans,vector<bool>& a,vector<bool>& b,vector<bool>& col,int j,int n){        if(j==n){            ans++;            return;        }        for(int i=0;i<n;i++){            if(!col[i]&&!a[i+j]&&!b[i-j+n-1]){                col[i]=true;                a[i+j]=true;                b[i-j+n-1]=true;                dfs(ans,a,b,col,j+1,n);                col[i]=false;                a[i+j]=false;                b[i-j+n-1]=false;            }                    }    }