N Queens

Posted: 24 Sep, 2020
Difficulty: Hard


Try Problem

You are given an integer 'N'. For a given 'N' x 'N' chessboard, find a way to place 'N' queens such that no queen can attack any other queen on the chessboard.

A queen can be killed when it lies in the same row, or same column, or the same diagonal of any of the other queens. You have to print all such configurations.

Input Format:
The first and the only line of input contains an integer 'N' representing the size of the chessboard and the number of queens.
Output Format:
Each line would be representing a single configuration.

Each configuration would contain 'N '* 'N' elements printed row-wise separated by spaces. The position where we can place the queen will have the value 1 rest will have the value 0.
You do not need to print anything, it has already been taken care of. Just implement the given function.
1 <= 'N' <= 10

Time Limit: 1sec
Approach 1
  1. Instead of checking all the places on the chessboard, we can use backtracking and place queen row-wise or column-wise.
  2. Suppose we place queens row-wise, and we start with the very first row. Place the queen and move to the next row until either there is a solution or there are no viable cells left.
  3. As we backtrack, check to place the queen in the different columns of the same row.
  4. When we can place a queen at the ‘N’th row, it means we have successfully placed all the ‘N’ queens so add this configuration to our final answer vector.
  5. At last, we will return the vector containing all the configurations in which we can successfully place the ‘N’ queens.
Try Problem