Leecode 面试题 08.12. 八皇后

原题链接:Leecode 面试题 08.12. 八皇后
Leecode 面试题 08.12. 八皇后_第1张图片

class Solution {
public:
    vector<vector<string>> res;
    bool v[9];
    int col[9];
    void dfs(int n,int now)
    {
        if(n==now)
        {
            vector<string> v;
            for(int i=0;i<n;i++)
            {
                string s;
                for(int j=0;j<n;j++)
                {
                    if(col[j]!=i) s+='.';
                    else s+='Q';
                }
                v.push_back(s);
            }
            res.push_back(v);
        }
        for(int i=0;i<n;i++)
        {
            if(!v[i])
            {
                bool flag=true;
                for(int j=0;j<now;j++)
                {
                    if(abs(i-col[j])==abs(j-now))
                    {
                        flag=false;
                        break;
                    }
                }
                if(flag)
                {
                    v[i]=true;
                    col[now]=i;
                    dfs(n,now+1);
                    v[i]=false;
                }
            }
        }
    }
    vector<vector<string>> solveNQueens(int n) {
        dfs(n,0);
        return res;
    }
};

你可能感兴趣的:(Leetcode,深度优先,leetcode,算法,c++,数据结构)