DEV Community

ZeeshanAli-0704
ZeeshanAli-0704

Posted on

N-Queen - All Possible Placements

This solution is more specific to leet code problem.
If you want only solution for possible option please print board array- or Refer - N-Queen : Check if possible to place in NxN

const N = 4;
let allPossibleArray = [];

function isSafe(board, row, col, N) {
  for (let i = row - 1; i >= 0; i--) if (board[i][col] == 1) return false;

  for (let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--)
    if (board[i][j] == 1) return false;

  for (let i = row - 1, j = col + 1; i >= 0 && j < N; i--, j++)
    if (board[i][j] == 1) return false;

  return true;
}

function solveNQUtil(board, N, row) {
  if (row === N) {
    let tm = [];
    for (let i = 0; i < N; i++) {
      let s = "";
      for (let j = 0; j < N; j++) {
        if (board[i][j] == 1) s += "Q";
        else s += ".";
      }
      tm.push(s);
    }
    allPossibleArray.push(tm);
  }

  for (let col = 0; col < N; col++) {
    if (isSafe(board, row, col, N) == true) {
      board[row][col] = 1;
      solveNQUtil(board, N, row + 1);
      board[row][col] = 0;
    }
  }

  return false;
}

function solveNQ() {
  let board = [
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
  ];
  solveNQUtil(board, N, 0);

  return allPossibleArray;
}

console.log(solveNQ());

Enter fullscreen mode Exit fullscreen mode

Top comments (0)