52.leetcode N-Queens II(hard)[基于N-Queens修改返回值]

来源:互联网 发布:阿里云虚拟主机怎么看 编辑:程序博客网 时间:2024/05/21 07:53

Follow up for N-Queens problem.

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

基于N-Queens修改返回值接口即可,比N-Queens更加简单。

class Solution {public:    bool valid(int cols,int row,int n, vector<int> &status)    {        for(int i=0;i<row;i++)        {            if(status[i] == cols || abs(status[i]-cols) == abs(i-row))                    return false;        }        return true;    }    void getQueens(int row,int n,vector<int> &status,int &sum)    {        if(row == n) //此时表示一个合法的皇后棋盘已经产生        {            ++sum;        }else{            for(int i= 0;i<n;i++)            {                 if(valid(i,row,n,status))                    {                     status[row] = i;                     getQueens(row+1,n,status,sum);                     status[row] = -1;                 }            }        }    }    int totalNQueens(int n) {        int sum = 0;        if(n <= 0) return sum;        vector<int>status(n,-1);        getQueens(0,n,status,sum);        return sum;    }};


0 0
原创粉丝点击