N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
详文请见八皇后
leetcode AC代码
class Solution {
public:
int num;
void queen(int* a,int n,int m){ //填充第m个
if(m==n) num++;
else{
for(int i=0;i<n;i++){ // 填充有n个选择
int ok=1;
for(int j=0;j<m;j++){
if(i==a[j]||abs(i-a[j])==abs(j-m)){ // 第
ok=0;break;
}
}
if(ok){
a[m]=i;
queen(a,n,m+1);
}
}
}
}
int totalNQueens(int n) {
int a[100],i,j; //a[i]代表第i行(每一行一个皇后)的皇后在a[i]列
num=0;
queen(a,n,0); // 一开始填充第0个皇后的位置
return num;
}