Knight's tour
- From: forayer <forayer@xxxxxxxxxxxxxx>
- Date: Wed, 29 Jun 2005 10:51:01 +0530
Hi there,
Is there any particular pattern in which to short-list the
possible squares in the Knight's Tour problem such that it is solved with few back-tracking?
I did this implementation where I check row-wise
| |1| |2| |
|3| | | |4|
| | |N| | |
|5| | | |6|
| |7| |8| |
But in this case, if I start from top-left corner, it takes 17739767
calls to the visit func before a solution is found! And if I start from
the lower-right corner, it seems to take forever to find a solution.
Regards, forayer
Here's the code I use to visit the 'next' square:
/* | |1| |2| | */
if(x>1) {
t = x-2;
if(y>0) {
u = y-1;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
if(y<7) {
u = y+1;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
}
/* |3| | | |4| */
if(x>0) {
t = x-1;
if(y>1) {
u = y-2;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
if(y<6) {
u = y+2;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
}
/* |5| | | |6| */
if(x<7) {
t = x+1;
if(y>1) {
u = y-2;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
if(y<6) {
u = y+2;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
}
/* | |7| |8| | */
if(x<6) {
t = x+2;
if(y>0) {
u = y-1;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
if(y<7) {
u = y+1;
if( board[t][u]==0 )
if( visit(t,u,v+1) )
return 1;
}
}
.- Follow-Ups:
- Re: Knight's tour
- From: Gerry Quinn
- Re: Knight's tour
- Prev by Date: Re: Is anybody's favorite computer programming language not included here?
- Next by Date: Re: Is anybody's favorite computer programming language not included here?
- Previous by thread: Hypercube
- Next by thread: Re: Knight's tour
- Index(es):