public class Solution {
public static ArrayList ret = new ArrayList();
public int totalNQueens(int n) {
if(n<1){
return 0;
}
String[] rows = new String[n];
int row = 0;
bfsNQueen(row,n, rows, ret);
return ret.size();
}
public void bfsNQueen(int row, int n, String[] rows, ArrayList ret) {
if(row == n) {
ret.add(rows.clone());// ***** .clone()
return;
}
for(int col = 0; col
if( isValid(col, row, rows) ){
char[] tmp = new char[n];
Arrays.fill(tmp, '.'); // ***** Arrays.fill()
tmp[col] = 'Q';
rows[row] = String.copyValueOf(tmp); // ***** String.copyValueOf()
}
}
return;
}
public boolean isValid(int col, int curRow, String[] rows){
for(int i=0; i
int curCol = rows[i].indexOf("Q");
if (col==curCol)
return false;
if(Math.abs(i-curRow)==Math.abs(col-curCol))
return false;
}
return true;
}
}