Como dice el titulo estoy resolviendo este problema con backtracking, para quien no sepa de que se trata aqui dejo el link:
El código es el siguiente:
#include <iostream>
using namespace std;
const int TAM_TABLERO = 8;
void caballoLoco(int tablero[][TAM_TABLERO], int TAM_TABLERO, int x, int y,int mov, int incx[], int incy[]);
int main(int argc, const char * argv[])
{
int tablero[TAM_TABLERO][TAM_TABLERO];
int mov = 1;
int incx[8] = {-1,1,2,2,1,-1,-2,-2};
int incy[8] = {-2,-2,-1,1,2,2,1,-1};
for(int i=0; i<TAM_TABLERO; i++){
for(int j=0; j<TAM_TABLERO; j++){
tablero[i][j] = 0;
}
}
caballoLoco(tablero,TAM_TABLERO,0,0,mov,incx, incy);
return 0;
}
void caballoLoco(int tablero[][TAM_TABLERO], int TAM_TABLERO, int x, int y, int mov, int incx[], int incy[]){
int nx, ny;
nx = 0;
ny = 0;
tablero[x][y] = mov;
if(mov==TAM_TABLERO*TAM_TABLERO){
for(int i=0; i<TAM_TABLERO; i++){
for(int j=0; j<TAM_TABLERO; j++){
cout<<tablero[i][j]<<" ";
}
cout<<"n";
}
}else{
for(int i=0; i<8; i++){
nx = x + incx[i];
ny = y + incy[i];
if((nx>=0 && nx<8) && (ny>=0 && ny<8) && (tablero[nx][ny]==0)){
caballoLoco(tablero, TAM_TABLERO, nx, ny, mov+1,incx,incy);
}
}
}
tablero[x][y] = 0;
}
Y lleva 8 minutos ejecutandose y como que creo que no debería tardar tanto, ¿Sugerencias? Gracias.