[LEETCODE]52. N-Queens II

[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 来判断是否符合要求。

阅读更多
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/TonyYang1995/article/details/52012522
文章标签: leetcode
个人分类: LEETCODE
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭