题目:
根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。
样例
比如n=4,存在2种解决方案
解题:
和上一题差不多,这里只是求数量,这个题目定义全局变量,递归的时候才能保存结果,参考程序
java程序:
class Solution {
/**
* Calculate the total number of distinct N-Queen solutions.
* @param n: The number of queens.
* @return: The total number of distinct solutions.
*/
int result = 0;
int[] cols;
public int totalNQueens(int n) {
//write your code here
cols = new int [n];
result = 0;
DFS(n,0);
return result;
} public void DFS(int n,int row){
if(n == row){
result ++;
return;
}else{
for(int i=0;i<n;i++){
cols[row] = i;
if(isValid(row))
DFS(n,row+1);
}
}
}
public boolean isValid(int row){
for(int i=0;i<row;i++)
if(cols[i]==cols[row] || Math.abs(cols[i]-cols[row])== row - i )
return false;
return true;
}
};
总耗时: 1202 ms