KNIGHT'S TOUR PROBLEM. CAN YOU ALL HELP ME. FINISHED PROGRAM BUT SOMETHING WRONG IN THE MOVEMENT?

#include<stdio.h>
#include<conio.h>

void BoardI(int **board, int X, int Y);
void BoardD(int **board, int X, int Y);
bool KT(int **board, int Coor1, int Coor2, int X, int Y, int Kmove);
bool ValidMove(int **board, int Coor1, int Coor2, int X, int Y);

int main()
{
int X, Y, Coor1, Coor2;
int **board;
do
{
printf("Enter Length and Height:");
scanf("%d %d",&X,&Y);
} while ((X < 1) || (Y < 1));

do
{
printf("Enter X = 1 - %d: ",X);
scanf("%d",&Coor1);
} while ((Coor1 > X) || (Coor1 < 1));

do
{
printf("Enter Y = 1 - %d: ",Y);
scanf("%d",&Coor2);
} while ((Coor2 > Y) || (Coor2 < 1));
printf("X: %d Y: %d\n",X,Y);
printf("X Coor: %d Y Coor: %d\n",Coor1,Coor2);
Coor2--;
Coor1--;

printf("---------------------------------------------------\n");


board = new int *[X];
int **temp = board;

for (int a = 0; a < X; a++)
{
*temp = new int[Y];
(temp)++;
}


BoardI(board, X, Y);
BoardD(board, X, Y);


printf("................");

if (KT(board, Coor1, Coor2, X, Y, 1))
{
printf("VALID:");
BoardD(board, X, Y);
}
else
{
printf("NOT VALID::\n");
BoardD(board,X,Y);
}


for(int i = 0; i < X; i++)
{
delete [] (*board);
(board)++;
}

printf(".....");
scanf("%*1000[^\n]%*1[\n]%*c");


getch();
return 0;
}


void BoardI(int **board, int X, int Y)
{
int x, y;

for (x = 0; x < X; x++)
{
for (y = 0; y < Y; y++)
{
board[x][y] = 0;
}
}
}


void BoardD(int **board, int X, int Y)
{
int x, y;

for (x = 0; x < X; x++)
{
for (y = 0; y < Y; y++)
{
printf("%3d",board[x][y]);
}
printf("\n");
}
}



bool ValidMove(int **board, int Coor1, int Coor2, int X, int Y)
{
if ((Coor1 < 0) || (Coor1 >= X))
{
return false;
}

if ((Coor2 < 0) || (Coor2 >= Y))
{
return false;
}

if (board[Coor1][Coor2] != 0)
{
return false;
}

return true;
}

bool KT(int **board, int Coor1, int Coor2, int X, int Y, int Kmove)
{
if (!ValidMove(board, Coor1, Coor2, X, Y))
{
return false;
}

board[Coor1][Coor2] = Kmove;

if ((X * Y) == Kmove)
{
return true;
}
printf("\nKT: %d %d %d \n",Coor1,Coor2,Kmove);
if (!KT(board, (Coor1 - 1), (Coor2 - 2), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 - 2), (Coor2 - 1), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 - 2), (Coor2 + 1), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 - 1), (Coor2 + 2), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 + 1), (Coor2 + 2), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 + 2), (Coor2 + 1), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 + 2), (Coor2 - 1), X, Y, (Kmove + 1)))
if (!KT(board, (Coor1 + 1), (Coor2 - 2), X, Y, (Kmove + 1)))


return false;
getch();
}



OUTPUT:
Enter Length and Height:8 8
Enter X = 1 - 8: 1
Enter Y = 1 - 8: 6
X: 8 Y: 8
X Coor: 1 Y Coor: 6
---------------------------------------------------
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
................
KT: 0 5 1

KT: 1 7 2

KT: 3 6 3

KT: 2 4 4

KT: 1 2 5

KT: 0 0 6

KT: 2 1 7

KT: 0 2 8

KT: 1 4 9

KT: 0 6 10

KT: 2 7 11

KT: 1 5 12

KT: 0 3 13

KT: 2 2 14

KT: 1 0 15

KT: 3 1 16

KT: 2 3 17

KT: 1 1 18

KT: 3 2 19

KT: 2 0 20

KT: 0 1 21

KT: 1 3 22

KT: 2 5 23

KT: 0 4 24

KT: 1 6 25

KT: 3 7 26

KT: 5 6 27

KT: 4 4 28

KT: 6 5 29

KT: 5 3 30

KT: 4 1 31

KT: 3 3 32

KT: 4 5 33

KT: 2 6 34

KT: 0 7 35

KT: 4 7 35

KT: 3 5 36

KT: 5 4 37

KT: 4 2 38

KT: 3 0 39

KT: 5 1 40

KT: 4 3 41

KT: 5 5 42

KT: 3 4 43

KT: 4 6 44

KT: 6 7 45

KT: 7 5 46

KT: 6 3 47

KT: 7 1 48

KT: 5 0 49

KT: 6 2 50

KT: 7 4 51

KT: 6 6 52

KT: 7 0 51

KT: 5 2 49

KT: 4 0 50

KT: 6 1 51

KT: 7 3 52

KT: 6 4 50

KT: 7 6 51

KT: 5 7 52

KT: 7 2 51

KT: 6 0 52

KT: 7 7 30
NOT VALID::
6 21 8 13 24 1 10 35
15 18 5 22 9 12 25 2
20 7 14 17 4 23 34 11
39 16 19 32 43 36 3 26
50 31 38 41 28 33 44 35
49 40 49 30 37 42 27 52
52 51 50 47 50 29 52 45
51 48 51 52 51 46 51 30
.....

Can you help me. My program Knight's Tour is finished. But there's something wrong, Look at the 51 it shows again, When it starts in 1 to 50, then the next number 51 copies, show again! It doesn't finish in 64. Aw. Can you all help me.
Last edited on
Please use

[code][/code]


to format your code.

Could you please explain what your codes is supposed to do
Last edited on
It should complete the 64 moves but when the 51 square has stepped. It's the same again. 51,51..... HELP
Machtl wrote:
Please use

[code][/code]


to format your code.
Topic archived. No new replies allowed.