bool moverCaballo(int x,int y,int cont) { bool listo = false; mat[y] = cont; if ( cont == N*N) { return true; } if ( !listo && verificarCasilla(x+2,y+1) ) { listo = moverCaballo(x+2,y+1,++cont); } if ( !listo && verificarCasilla(x+1,y+2) ) { listo = moverCaballo(x+1,y+2,++cont); } if ( !listo && verificarCasilla(x-1,y+2) ) { listo = moverCaballo(x-1,y+2,++cont); } if ( !listo && verificarCasilla(x-2,y+1) ) { listo = moverCaballo(x-2,y+1,++cont); } // izquierda if ( !listo && verificarCasilla(x+2,y-1) ) { listo = moverCaballo(x+2,y-1,++cont); } if ( !listo && verificarCasilla(x+1,y-2) ) { listo = moverCaballo(x+1,y-2,++cont); } if ( !listo && verificarCasilla(x-1,y-2) ) { listo = moverCaballo(x-1,y-2,++cont); } if ( !listo && verificarCasilla(x-2,y-1) ) { listo = moverCaballo(x-2,y-1,++cont); } if( !listo) { mat[y] = 0; } return listo; }
bool verificarCasilla(int x,int y) { if ( mat[y] != 0 ) { return false; } else if ( x >=N || y >= M || x < 0 || y < 0 ) { return false; } return true; }
#define N 5#define M 5int mat[N][M] = {0};int main() { moverCaballo(0,0,1); imprimirMatriz(); system("pause"); return 0;}
1 11 16 0 018 23 0 10 1512 2 5 20 725 19 8 14 40 13 3 6 0Presione una tecla para continuar . . .
1 16 11 6 310 5 2 17 1215 22 19 4 720 9 24 13 1823 14 21 8 25