leetcode 51(n-queens)——经典回溯

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33614902/article/details/82669485
class Solution {
public:
    vector<int> vec;
    vector<vector<string>> res;
    void dfs(int n){
        if(vec.size() == n){
            vector<string> help;
            for(int i=0;i<n;i++){
                string str(n,'.');
                str[vec[i]] = 'Q';
                help.push_back(str);
            }
            res.push_back(help);
            return;
        }
        
        for(int i=0; i<n; i++){
            bool is_dfs = true;
            for(int j=0; j<vec.size(); j++){
                if(vec[j] == i || (abs(vec[j]-i) == vec.size()-j)){is_dfs = false; break;}
            }
            if(is_dfs){
            vec.push_back(i);
            dfs(n);
            vec.pop_back();
            }
        }
        return;
    }
        
    vector<vector<string>> solveNQueens(int n) {
        dfs(n);
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_33614902/article/details/82669485