N-Queens II 八皇后问题的解的个数

来源:互联网 发布:大屏幕控制软件 bx 编辑:程序博客网 时间:2024/04/29 09:20
class Solution {
public:
    void DFS(int row,int n)
    {  
       
        if(row==n)
        {    
          ++this->count;
          return;
        }
        
        for(int j=0;j<n;j++)
        {
            bool isvalid=columns[j]==0&&maindiag[row+j]==0&&antidiag[row+n-j]==0;
            if(!isvalid)
            continue;
            C[row]=j;
            columns[j]=maindiag[row+j]=antidiag[row+n-j]=1;
            DFS(row+1,n);
            C[row]=0;
            columns[j]=maindiag[row+j]=antidiag[row+n-j]=0;
        }
    }
    int totalNQueens(int n) {
        this->columns= vector<int>(n,0);
        this->maindiag=vector<int>(2*n,0);
        this->antidiag=vector<int>(2*n,0);
        this->C=vector<int>(n,0);
        this->count=0;
        DFS(0,n);
        return count;
        
    }
    
private:
     vector<int> columns;
     vector<int> maindiag;
     vector<int> antidiag;
     vector<int> C;
     int count;
};
0 0
原创粉丝点击