N-Queens II--LeetCode

来源:互联网 发布:mysql 查询会锁表吗 编辑:程序博客网 时间:2024/05/20 04:15

1.题目

N-Queens II

Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.这里写图片描述

2.题意

统计N皇后的解的个数

3.分析

N-Queens的简化版,直接使用一个计数变量即可,无需保存结果的值

4.代码

class Solution {public:    int totalNQueens(int n) {        int res = 0;        vector<int> pos(n, -1);        solveNQueensDFS(pos, 0, res);        return res;    }private:    void solveNQueensDFS(vector<int> &pos, int row, int &res)     {        int n = pos.size();        if(row == n)        {            ++res;        }        else        {            for(int col = 0; col < n; ++col)            {                if(isValid(pos, row, col))                {                    pos[row] = col;                    solveNQueensDFS(pos, row + 1, res);                    pos[row] = -1;                }            }          }    }    bool isValid(vector<int> &pos, int row, int col)    {        for(int i = 0; i < row; ++i)        {            if(pos[i] == col || abs(row - i) == abs(col - pos[i]))                return false;        }        return true;    }};
原创粉丝点击