N-Queens II

来源:互联网 发布:手机淘宝怎么没彩票了 编辑:程序博客网 时间:2024/05/16 16:05

Follow up for N-Queens problem.

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


Solution:

class Solution {public:    bool isValued(int k, vector<int> v)    {        for(int i = 0; i < k; ++i)        {            if(v[i] == v[k] || abs(v[i] - v[k]) == abs(i - k))            {                return false;            }        }        return true;    }    int totalNQueens(int n) {        int t = 0, sum = 0;        vector<int> v(n);        v[0] = -1;        while(t >= 0)        {            v[t]++;            while(v[t] < n && !isValued(t, v)) v[t]++;            if(v[t] < n)            {                if(t == n - 1)                {                    sum++;                    t--;                }                else v[++t] = -1;            }            else t--;        }        return sum;    }};


0 0
原创粉丝点击