Guest User

Untitled

a guest
Oct 20th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. typedef int casilla;
  2. typedef struct {
  3.     int casillas[N][N]; // Laberinto NxN casillas
  4.     casilla entrada, salida;
  5.     FILE *pared;
  6. } Laberinto;
  7.  
  8. /*
  9. La casilla (0,0) del laberinto sera la casilla 0, la (0,1) la casilla,
  10. esto es importante para entrada, salida y la lista de paredes.
  11. Por ejemplo la lista de paredes será de la forma 0,1, significando que
  12. hay una pared entre casillas[0][0] y casillas[0][1].
  13. */
  14. Laberinto CrearLaberinto (FILE *paredes, casilla entrada, casilla salida)
  15. {
  16.     int i, j;
  17.     Laberinto L;
  18.  
  19.     //Inicializamos a 1
  20.     for (i=0;i<N;i++)
  21.         for (j=0;j<N;j++)
  22.             L.casillas[i][j] = 1;
  23.  
  24.    
  25.     L.pared = paredes;
  26.     l.entrada = entrada;
  27.     l.salida = salida;
  28.  
  29.     return L;
  30. }
  31.  
  32. //Devuelve el grafo asociado a un laberinto
  33. static Grafo GrafoLaberinto (Laberinto L)
  34. {
  35.     Grafo G;
  36.     int tam, i, j;
  37.  
  38.     tam = N*N*N*N;
  39.    
  40.     G = (Grafo) malloc (sizeof(tGrafo));
  41.     G->numVert = tam;
  42.     G->Costes = (tCoste *) malloc (sizeof(tCoste)*tam);
  43.    
  44.     for (i=0; i<N*N;i++)
  45.         for (j=0; j<N*N; j++)
  46.             G->Costes[i][j] = INF;
  47.  
  48.     while (L->fscanf(pared, "%d,%d", &i, &j)!=EOF)
  49.     {
  50.         G->Costes[i][j] = INF;
  51.         G->Costes[j][i] = INF;
  52.     }
  53.  
  54.     return G;  
  55. }
  56.  
  57. //Devuelve la solución del laberinto
  58.  
  59. vertice **ResolverLaberinto (Laberinto L)
  60. {
  61.     Grafo Aux;
  62.     tCoste **D;
  63.     vertice **P;
  64.  
  65.     Aux = GrafoLaberinto(L);
  66.     Dijkstra (L->entrada, L->salida, D, P);
  67.     DestruirGrafo(Aux);
  68.  
  69.     return P;
  70. }
Add Comment
Please, Sign In to add comment