Due 5pm, Friday, April 29th (60 extended project points)
Goals

Overview
For this assignment, write a C++ program that prints all
solutions of the Nqueens problem for a given positive value of N.
In the Nqueens problem, the goal is to place N queens on an NbyN chess
board so that no two queens are on the same row, column, or diagonal.
The picture shows a solution of the 4queens problem. Note that there
are 2 answers to the 4queens problem, 92 for 8queens, and 724 for
10queens. Don't choose big numbers.
Specification
Your program absolutely MUST contain a recursive backtracking function.
It must be written in C++.
Your program must include several wellconstructed and documented functions
with parameters passed appropriately.
Your program must use a vector as its primary data structure as described below.
Your program will obtain a positive integer N from the user and print all possible solutions for placing N queens on an NxN chess board. A solution will show the row and column location of each queen such that no two queens are on the same row, column, or diagonal. If there is no solution, there will be no output other than perhaps a label (ex. Solutions for 2 Queens) followed by empty space.
If the user enters a nonpositive input, ask for input until a positive integer is provided or end of file is reached. Your program should be robust enough to handle the user typing a character. cin.clear( ) and cin.ignore( ) will be helpful.
Print all solutions for the value of N with one solution per line. Each line shows the row, column position of the N queens.
Helpful Hints
As in many problems, choosing an appropriate data representation can make a problem easier. A solution will have exactly one queen in each row; therefore, you can represent the board with a single vector which contains the column location of the queen in the row given by each index. A solution will have exactly one queen in each column; therefore, the values in this vector will be unique values 0 to N1. The picture at right matches the solution above. 
Use a recursive backtracking approach where you ensure that you have successfully placed queens in all rows 0 to r1. You then attempt to place a queen in all the possible columns of row r. If you can successfully place a queen in column c (ensuring that you have queens placed appropriately in rows 0 to r), you try to place queens in the following rows.
If you find yourself trying to place a queen in row N, you have a solution in rows 0 to N1. This is your base case.
You must be able to determine whether placing the current row's queen in a column will conflict with any other previously placed queens. There are three kinds of possible conflicts: row, column, and diagonal.
Only if you can successfully place the queen of row r in column c can you go on to trying the possibilities in row r+1. That's a precondition on your recursive function.
Example Output for 4queens Problem
(0,1) (1,3) (2,0) (3,2) (0,2) (1,0) (2,3) (3,1)