Problem of the day
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.
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.
Note:
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
For a chessboard of size 4*4
The configurations are
4
0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0
0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0
Output depicts two possible configurations of the chessboard for 4 queens.
The Chessboard matrix for the first configuration looks as follows:-
0 0 1 0
1 0 0 0
0 0 0 1
0 1 0 0
Queen contained cell is depicted by 1. As seen, No queen is in the same row, column, or diagonal as the other queens. Hence this is a valid configuration.
3
(Blank)
Since no possible configuration exists for 3 Queen's.The output remains Empty.
Can we use Backtracking to generate all possible configurations?
O(N!), where ‘N’ is the number of queens and ‘!’ represents factorial.
For the first row, we check ‘N’ columns, for the second row we check 'N - 1 column and so on. hence time complexity will be N * (N-1) * (N-2) …. i.e N!
O(N^2), where ‘N’ is the number of queens.
As we are using a 2-D array of size N rows and N columns, and also because of recursion recursive stack will have a linear space here. So, the overall space complexity will be O(N^2).