Código
#include <stdio.h> #include <stdlib.h> #define ncuad n*n #define n 8 void mover(int matriz1[][n],int i, int pos_x, int pos_y, int *q); const int ejex[8] = { -1,-2,-2,-1, 1, 2, 2, 1 }, ejey[8] = { -2,-1, 1, 2, 2, 1,-1,-2 }; int main (void) { int matriz1[n][n],i,j,q; for(i=0;i<n;i++) { for(j=0;j<n;j++) { matriz1[i][j]=0; } } matriz1[0][0]=1; mover(matriz1,2,0,0,&q); for(i=0;i<n;i++) { for(j=0;j<n;j++) { } } return 0; } void mover(int matriz1[][n],int i, int pos_x, int pos_y, int *q) { int k, u, v; k = 0; *q = 0; do { u = pos_x + ejex[k]; v = pos_y + ejey[k]; /* seleccionar candidato */ if (u >= 0 && u < n && v >= 0 && v < n) { /* esta dentro de los limites? */ if (matriz1[u][v] == 0) { /* es valido? */ matriz1[u][v] = i; /* anota el candidato */ if (i < ncuad) { /* llega al final del recorrido? */ mover(matriz1,i+1,u,v,q); if (*q) matriz1[u][v] = 0; /* borra el candidato */ } else *q = 1; /* hay solucion */ } } k++; } while (!*q && k < 8); }
[MOD] Para publicar codigo, usar etiquetas GeShi, gracias.