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

can someone please do this code in C++ and should be able to compile in a compil

ID: 3604392 • Letter: C

Question

can someone please do this code in C++ and should be able to compile in a compiler like Visual Studio

In the game of chess, a queen is the most "powerful" piece which can move any number of squares vertically t, horizontally (-), or diagonally in the chessboard. The n-Queens problem is to put n queens on an n × n chessboard so that the queens cannot attack each other. That is, no two queens share the same row, column, or diagonal. In this assignment, you will use two-dimensional arrays to write a program to put queens on the board one by one. Figure 1 shows an example 18 × 18 board configuration. In the figure, 'Q' denotes a queen,',' denotes an empty square, and '' denotes a square that is attacked by a queen. The rows and columns are named in numbers (0-17) and uppercase letters (A-R) respectively. Note that a necessary (but not sufficient) condition to solve the n-Queens problem is to have exactly one queen on each row and on each column. A BCDEFGHIJ K L M NO P QR 1 2 4 7 10 12 . 15 No. of Queens - 2 Figure 1: An Example 18 × 18 Board Configuration Program Specification This section describes the chessboard representation, program flow, and some special requirements. Chessboard Representation The chessboard will be represented by a two-dimensional array of chan. The array elements should

Explanation / Answer

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

   backtracking */

#define N 18

#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("n");

    }

}

/* 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] =//input here

    };

    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;

}

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

   backtracking */

#define N 18

#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("n");

    }

}

/* 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] =//input here

    };

    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