class Solution {
List<List<String>> list = new ArrayList<>();
public List<List<String>> solveNQueens(int n) {
//try to put in the first row
char[][] grid = new char[n][n];
for(char c[] : grid){
Arrays.fill(c, '.');
}
check(0,grid,n);
return list;
}
public void check(int i,char [] grid[], int n){
if(i>=n){
found(grid);
return;
}
for(int j = 0;j<n;j++){
if(canPlace(i,j,grid)){
grid[i][j] = 'Q';
check(i+1,grid,n);
grid[i][j] = '.';
}
}
}
public void found(char[][] grid){
List<String> l = new ArrayList<>();
for(int i =0;i<grid.length;i++){
l.add(new String(grid[i]));
}
list.add(l);
}
public boolean canPlace(int i ,int j, char grid[][]){
//base case
if(grid[i][j] == 'Q') return false;
int I = i;
int J = j;
//same column back
while(I>=0){
if(grid[I][j]=='Q') return false;
I--;
}
I = i;
J = j;
//diagonal left up
while(I>=0 && J>=0){
if(grid[I][J]=='Q') return false;
I--;
J--;
}
I = i;
J = j;
//diagonal right up
while(I>=0 && J<grid[0].length){
if(grid[I][J]=='Q') return false;
I--;
J++;
}
return true;
}
}
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)