Skip to content

N Queens Puzzle #2554

@kumanoit

Description

@kumanoit

Is your feature request related to a problem? Please describe.
Given a N x N chess board. Return all arrangements in which N queens can be placed on the board such no two queens attack each other.
Ex. N = 6
Solution= There are 4 possible ways
Arrangement: 1
".Q....",
"...Q..",
".....Q",
"Q.....",
"..Q...",
"....Q."

Arrangement: 2
"..Q...",
".....Q",
".Q....",
"....Q.",
"Q.....",
"...Q.."

Arrangement: 3
"...Q..",
"Q.....",
"....Q.",
".Q....",
".....Q",
"..Q..."

Arrangement: 4
"....Q.",
"..Q...",
"Q.....",
".....Q",
"...Q..",
".Q...."

Describe the solution you'd like
This can be solved using backtracking in below steps

  1. Start with first column and place queen on first row
  2. Try placing queen in a row on second column
  • If placing second queen in second column attacks any of the previous queens, change the row in second column
  • otherwise move to next column and try to place next queen
  • In case if there is no rows where a queen can be placed such that it doesn't attack previous queens, then go back to previous column and change row of previous queen.
  1. Keep doing this until last queen is not placed safely.
  2. If there is no such way then return an empty list as solution

Describe alternatives you've considered
Brute Force approach:

  1. Generate all possible arrangement to place N queens on N*N board.
  2. Check each board if queens are placed safely.
  3. If it is safe, include arrangement in solution set. Otherwise ignore it

Problem with this approach

  1. But this will lead to an exponential number of arrangement. Which will be too slow to run.

Additional context
No

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions