52. N-Queens II

来源:互联网 发布:网络推广的主要方法 编辑:程序博客网 时间:2024/05/21 10:12


Follow up for N-Queens problem.

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




class Solution {public:    bool isvalid(vector<int> label, int l){        for(int i = 0; i< l; i++){            if(label[l] == label[i])                return false;        }        for(int i = 0; i < l; i++){            if((l-label[l]) == (i - label[i]))            return false;            if((l+label[l]) == (i+label[i]))            return false;        }        return true;    }    void queen(vector<int>&label, int n, int l, int& num){        if(l == n){            num++;            return;        }        for(int i = 0; i < n; i++){            label[l] = i;            if(isvalid(label, l))                queen(label, n, l+1, num);            label[l] = 0;        }    }    int totalNQueens(int n) {        if(n <= 1) return n;        vector<int>labal(n,0);        int num = 0;        queen(labal,n,0,num);        return num;    }};


0 0
原创粉丝点击