Que cambios mencionas no te entiedo??
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
#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);
printf("\n\t");
printf("Estos son los valores de la matriz \n\n");
printf("\t\t MATRIZ ORDENADA ");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
{
printf("%6d", matriz1[i][j]);
}
}
printf("\n");
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);
}