主题思想: 回溯,搜索题。 这次考察回溯如何返回值。
AC 代码:
class Solution {
public int totalNQueens(int n) {
return dfs(0,n,new ArrayList<Integer> ());
}
public int dfs(int step,int n,List<Integer> record){
if(step==n) return 1;
int totalNum=0;
for(int i=0;i<n;i++){
if(!check(step,i,record)) continue;
record.add(i);
totalNum+=dfs(step+1,n,record);
int len=record.size();
record.remove(len-1);
}
return totalNum;
}
public boolean check(int step,int index,List<Integer> record){
for(int i=0;i<record.size();i++){
if((step-i)==Math.abs(index-record.get(i))||index==record.get(i))
return false;
}
return true;
}
}