Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please provide a working code and answers for the following question, Thanks! Pr

ID: 3789380 • Letter: P

Question

Please provide a working code and answers for the following question, Thanks!

Problem statement: Solve N-Queen problem using: an iterative method, and recursive method for N = 8 and N = 9. Your report should include: pseudocode for both methods, programs with comments, all solutions for N = 8 and 9 for both methods, comparing running time (in ms) for the following eight cases listed in the table, discussion on the reported running times. Method Finding first solution (N = 8) Finding first solution (N = 9) Finding all solutions (N = 8) Finding all solutions (N = 9) Iterative Recursive

Explanation / Answer

// It is a 2 big a question to be done in 2 hours.

// Here is recursive version on N queen problem.

/* C/C++ program to solve N Queen Problem using

   backtracking */

#define N 4

#include<stdio.h>

/* A utility function to print solution */

void printSolution(int board[N][N])

{

    for (int i = 0; i < N; i++)

    {

        for (int j = 0; j < N; j++)

            printf(" %d ", board[i][j]);

        printf(" ");

    }

}

/* A utility function to check if a queen can

   be placed on board[row][col]. Note that this

   function is called when "col" queens are

   already placed in columns from 0 to col -1.

   So we need to check only left side for

   attacking queens */

bool isSafe(int board[N][N], int row, int col)

{

    int i, j;

    /* Check this row on left side */

    for (i = 0; i < col; i++)

        if (board[row][i])

            return false;

    /* Check upper diagonal on left side */

    for (i=row, j=col; i>=0 && j>=0; i--, j--)

        if (board[i][j])

            return false;

    /* Check lower diagonal on left side */

    for (i=row, j=col; j>=0 && i<N; i++, j--)

        if (board[i][j])

            return false;

    return true;

}

/* A recursive utility function to solve N

   Queen problem */

bool solveNQUtil(int board[N][N], int col)

{

    /* base case: If all queens are placed

      then return true */

    if (col >= N)

        return true;

    /* Consider this column and try placing

       this queen in all rows one by one */

    for (int i = 0; i < N; i++)

    {

        /* Check if queen can be placed on

          board[i][col] */

        if ( isSafe(board, i, col) )

        {

            /* Place this queen in board[i][col] */

            board[i][col] = 1;

            /* recur to place rest of the queens */

            if ( solveNQUtil(board, col + 1) )

                return true;

            /* If placing queen in board[i][col]

               doesn't lead to a solution, then

               remove queen from board[i][col] */

            board[i][col] = 0; // BACKTRACK

        }

    }

     /* If queen can not be place in any row in

        this colum col then return false */

    return false;

}

/* This function solves the N Queen problem using

   Backtracking. It mainly uses solveNQUtil() to

   solve the problem. It returns false if queens

   cannot be placed, otherwise return true and

   prints placement of queens in the form of 1s.

   Please note that there may be more than one

   solutions, this function prints one of the

   feasible solutions.*/

bool solveNQ()

{

    int board[N][N] = { {0, 0, 0, 0},

        {0, 0, 0, 0},

        {0, 0, 0, 0},

        {0, 0, 0, 0}

    };

    if ( solveNQUtil(board, 0) == false )

    {

      printf("Solution does not exist");

      return false;

    }

    printSolution(board);

    return true;

}

// driver program to test above function

int main()

{

    solveNQ();

    return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote