N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Hide Similar Problems
class Solution {
public:
int sum;
int totalNQueens(int n) {
int *a=new int[n];
memset(a,0,sizeof(a));
sum=0;
solve(a,n,0);
return sum;
}
void solve(int *a,int n,int index)
{
for(int i=0;i<n;i++)
{
if(isValid(a,n,index,i))
{
a[index]=i;
if(index==n-1)
{
sum++;
a[index]=0;
return ;
}
solve(a,n,index+1);
a[index]=0;
}
}
}
bool isValid(int *a,int n,int x,int y)
{
int col;
for(int i=0;i<x;i++)
{
col=a[i];
if(y==col)
return false;
if(y-col==x-i)
return false;
if(y-col==i-x)
return false;
}
return true;
}
};