[LEETCODE]52. N-Queens II

来源:互联网 发布:绣春刀2剧情解析知乎 编辑:程序博客网 时间:2024/05/18 15:56

[LEETCODE]52. N-Queens II

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

这道题比N-Queens 要简单一点。
它要求输出的所有可能的不同解。这里代码都是差不多的。

class Solution {public:    bool check(vector<int>& cols, int cur) {        for (int i = 0; i < cur; i++) {            if (cols[i] == cols[cur] || (abs(cols[i] - cols[cur]) == cur - i)) return false;        }        return true;    }    void Nqueens(int n, vector<int>& cols, int &res, int cur) {        if (cur == n) {            res++;            return;        }        for (int i = 0; i < n; i++) {            cols[cur] = i;            if (check(cols, cur)) {                Nqueens(n, cols, res, cur + 1);            }        }    }    int totalNQueens(int n) {        vector<int> cols(n, -1);        int res = 0;        Nqueens(n, cols, res, 0);        return res;    }};

主要就是用了一个递归回溯,要注意递归的话一定要设置一个返回条件,然后用check 来判断是否符合要求。

0 0