Write a program that solve the mutilated checkerboard proble
Write a program that solve the mutilated checkerboard problem for a 4x4 checkerboard. The program should read in the \"blocked\" positions. The program needs to create an input into Microsoft Z3 which tells you if theres a way to place the dominoes on the checkerboard so all the unblocked posotions are covered, all blocked positions are not coveredm and you are not allowed to have more than one domino on a position.
Solution
#define N 4
#include<stdio.h>
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(\"\ \");
}
}
bool isSafe(int board[N][N], int row, int col)
{
int i, j;
for (i = 0; i < col; i++)
if (board[row][i])
return false;
for (i=row, j=col; i>=0 && j>=0; i--, j--)
if (board[i][j])
return false;
for (i=row, j=col; j>=0 && i<N; i++, j--)
if (board[i][j])
return false;
return true;
}
bool solveNQUtil(int board[N][N], int col)
{
if (col >= N)
return true;
for (int i = 0; i < N; i++)
{
if ( isSafe(board, i, col) )
{
board[i][col] = 1;
if ( solveNQUtil(board, col + 1) )
return true;
board[i][col] = 0;
}
}
return false;
}
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;
}
int main()
{
solveNQ();
return 0;
}


