The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return the number of distinct solutions to the n-queens puzzle.
Example:
Input: 4
Output: 2
Explanation: There are two distinct solutions to the 4-queens puzzle as shown below.
[
[".Q..", // Solution 1
"...Q",
"Q...",
"..Q."],
["..Q.", // Solution 2
"Q...",
"...Q",
".Q.."]
]
class Solution {
boolean []column;
boolean []h;
boolean []r;
int count;
public int totalNQueens(int n) {
column=new boolean[n];
h=new boolean[n*2];
r=new boolean[n*2];
count=0;
dfs(n,0);
return count;
}
public void dfs(int n,int row)
{
if(n==row)
count++;
for(int i=0;i<n;i++)
{
if(!column[i]&&!h[i+row]&&!r[i-row+n])
{
column[i]=true;
h[i+row]=true;
r[i-row+n]=true;
dfs(n,row+1);
column[i]=false;
h[i+row]=false;
r[i-row+n]=false;
}
}
}
}