n-queens

作者: DaiMorph | 来源:发表于2019-07-16 00:21 被阅读0次
class Solution {
public:
    vector<vector<string> > solveNQueens(int n) {
        vector<vector<string>>result;
        vector<int>C(n,-1);
        dfs(C,result,0);
        return result;
    }
    void dfs(vector<int>&C,vector<vector<string>>&result,int row)
    {
        int N=C.size();
        if(row==N)
        {
            vector<string>temp;
            for(int i=0;i<N;i++)
            {
                string s(N,'.');
                for(int j=0;j<N;j++)
                {
                    if(j==C[i])s[j]='Q';
                }
                temp.push_back(s);
            }
            result.push_back(temp);
            return;
        }
        for(int j=0;j<N;j++){
            if(isValid(C,row,j))
            {
                C[row]=j;
                dfs(C,result,row+1);
            }
        }
    }
    bool isValid(vector<int>C,int row,int col)
    {
        for(int i=0;i<row;i++)
        {
            if(C[i]==col)return false;
            if(abs(i-row)==abs(C[i]-col))return false;
        }
        return true;
    }
};

相关文章

网友评论

      本文标题:n-queens

      本文链接:https://www.haomeiwen.com/subject/iwsakctx.html