class Solution {
private:
int total;
public:
int totalNQueens(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
total = 0;
vector<vector<string> > res;
vector<int> mark(n);
dfs(0, res, mark);
return total;
}
void dfs(int idx, vector<vector<string> >& res, vector<int>& mark)
{
int n = mark.size();
if (idx == n)
{
++total;
vector<string> tempVec;
for (int i = 0; i < n; ++i)
{
string temp = "";
for (int j = 0; j < n; ++j)
{
if (j == mark[i]) // ith row, jth column
temp += "Q";
else
temp += ".";
}
tempVec.push_back(temp);
}
res.push_back(tempVec);
}
else
{
for (int i = 0; i < n; ++i)
{
if (isOk(mark, idx, i))
{
mark[idx] = i;
dfs(idx + 1, res, mark);
}
}
}
}
bool isOk(vector<int>& mark, int idx, int val)
{
for (int i = 0; i < idx; i++)
{
if (val == mark[i]) return false;
else if (abs(val - mark[i]) == abs(i - idx)) return false;
}
return true;
}
};
[Leetcode] N-Queens II
最新推荐文章于 2022-06-06 10:35:33 发布