elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Necesito ayuda ¡¡ Desplazamineto del caballo en: 13 Mayo 2014, 07:23 am
Hola a todos tengo una duda con este codigo( lenguaje c ), es de el movimiento del caballo de ajedrez, se supone que tiene que tiene que abarcar todos lo cuadros del tablero sin pasar por uno mas de una vez, solo que me repite números en el tablero, ayuda por favor

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define ncuad n*n
  4. #define n 8
  5.  
  6.  
  7. void mover(int matriz1[][n],int i, int pos_x, int pos_y, int *q);
  8.  
  9. const int ejex[8] = { -1,-2,-2,-1, 1, 2, 2, 1 },
  10.          ejey[8] = { -2,-1, 1, 2, 2, 1,-1,-2 };
  11.  
  12. int main (void)
  13.  
  14. {
  15.  
  16.  
  17.  
  18.    int matriz1[n][n],i,j,q;
  19.  
  20.    for(i=0;i<n;i++)
  21.    {
  22.        for(j=0;j<n;j++)
  23.        {
  24.            matriz1[i][j]=0;
  25.        }
  26.    }
  27.  
  28.  
  29.    matriz1[0][0]=1;
  30.    mover(matriz1,2,0,0,&q);
  31.  
  32.    printf("\n\t");
  33.    printf("Estos son los valores de la matriz \n\n");
  34.    printf("\t\t MATRIZ ORDENADA ");
  35.    for(i=0;i<n;i++)
  36.    {
  37.        printf("\n");
  38.        for(j=0;j<n;j++)
  39.        {
  40.            printf("%6d", matriz1[i][j]);
  41.        }
  42.    }
  43.  
  44.    printf("\n");
  45.  
  46.  
  47.    return 0;
  48. }
  49. void mover(int matriz1[][n],int i, int pos_x, int pos_y, int *q)
  50. {
  51.  int k, u, v;
  52.  
  53.  k = 0;
  54.  *q = 0;
  55.  do {
  56.    u = pos_x + ejex[k]; v = pos_y + ejey[k]; /* seleccionar candidato */
  57.    if (u >= 0 && u < n && v >= 0 && v < n) { /* esta dentro de los limites? */
  58.      if (matriz1[u][v] == 0) {  /* es valido? */
  59.        matriz1[u][v] = i;  /* anota el candidato */
  60.        if (i < ncuad) {  /* llega al final del recorrido? */
  61.          mover(matriz1,i+1,u,v,q);
  62.        if (*q) matriz1[u][v] = 0; /* borra el candidato */
  63.        }
  64.        else *q = 1; /* hay solucion */
  65.      }
  66.    }
  67.    k++;
  68.  } while (!*q && k < 8);
  69. }
  70.  


[MOD] Para publicar codigo, usar etiquetas GeShi, gracias.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines