LeetCode: N-Queens II

来源:互联网 发布:手机话费购物软件 编辑:程序博客网 时间:2024/06/06 00:51

题目链接:https://leetcode.com/problems/n-queens-ii/#/description

这道题也是八皇后问题的变形,不过上一题是要求输出各组不同的解,这道题是输出解的个数,只需要稍微改动就可以了,设置一个变量sum来记录解的总数。每得到一组解sum就加一即可。

class Solution {public:    int *x;    int sum = 0;    int totalNQueens(int n) {       // sum = 0;        x = new int[n+1];        for(int i=0; i<=n; i++){            x[i] = 0;        }        n_queens(n, 1);        return sum;    }    void n_queens(int n, int k ){        if(k > n){            sum++;         //   cout<<sum<<",";        }        else{            for(int i=1; i<=n; i++){                x[k] = i;                if(legal(k)) n_queens(n,k+1);            }        }    }    bool legal(int k){        for(int j = 1; j<k; j++){            if((abs(x[j] - x[k]) == abs(j - k)) || (x[j] == x[k]))                 return false;        }        return true;    }};
原创粉丝点击