【leetcode 回溯(N皇后问题)C++】52. N-Queens II

52. N-Queens II

在这里插入图片描述

class Solution {
public:
    int ans = 0;
    bool canPlace(vector<int>& Q, int y, int x) {
        for(int ii = 0; ii < y; ii++) {
            if(Q[ii] == x || abs(Q[ii] - x) == abs(ii - y)) return false;
        }
        return true;
    }
    void queen(vector<int>& Q, int r) {
        if(r == Q.size()) {
            ans++;
            return ;
        }
        for(int ii = 0; ii < Q.size(); ii++) {
            if(canPlace(Q, r, ii)) {
                Q[r] = ii;
                queen(Q, r + 1);
                Q[r] = -1;
            }
        }
    }
    int totalNQueens(int n) {
        vector<int> Q(n, -1);
        queen(Q, 0);
        return ans;
    }
};
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页