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

class Solution {
public:
    void DFS(int row,int n)
    {  
       
        if(row==n)
        {    
          ++this->count;
          return;
        }
        
        for(int j=0;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(n,0);
        this->maindiag=vector(2*n,0);
        this->antidiag=vector(2*n,0);
        this->C=vector(n,0);
        this->count=0;
        DFS(0,n);
        return count;
        
    }
    
private:
     vector columns;
     vector maindiag;
     vector antidiag;
     vector C;
     int count;
};

你可能感兴趣的:(leetcode,深度优先搜索)