class Solution {
List<List<String>> result = new ArrayList<>();
public List<List<String>> solveNQueens(int n) {
int[] queen = new int[n];
for(int i = 0;i < n;i++)
queen[i] = -1;
solveNQueens(n,0,queen,new ArrayList<String>());
return result;
}
public void solveNQueens(int n,int curRow,int[] queen,List<String> output){
if(curRow == n)
result.add(new ArrayList<>(output));
StringBuffer sb = new StringBuffer();
for(int i = 0;i < n;i++)
sb.append('.');
for(int i = 0;i < n;i++){
if(hasQueen(n,queen,curRow,i))
continue;
sb.setCharAt(i,'Q');
queen[curRow] = i;
output.add(sb.toString());
solveNQueens(n,curRow+1,queen,output);
output.remove(output.size() - 1);
queen[curRow] = -1;
sb.setCharAt(i,'.');
}
}
public boolean hasQueen(int n,int[] queen,int row,int col){
for(int i = row-1;i >= 0;i--){
if(queen[i] == col || Math.abs(row-i) == Math.abs(col-queen[i]))
return true;
}
return false;
}
}
leetcode51. N 皇后
最新推荐文章于 2024-09-27 00:45:01 发布