Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. /************************************************************************
  2.  
  3. Labyrinthe.h
  4.  
  5. *************************************************************************/
  6.  
  7. #include <stdio.h>
  8. #include <malloc.h>
  9. #include <assert.h>
  10.  
  11. /* Types */
  12.  
  13. // Un labyrinthe est une matrice composee de 0 (chemin), de 1 (mur),
  14. // et d'un ou plusieurs 2 (sortie)
  15. typedef unsigned char** labyrinthe;
  16.  
  17. // Une coordonnee est constituee d'un indice de ligne et d'un indice
  18. // de colonne dans la matrice labyrinthe
  19. typedef struct COORD {
  20. int ligne;
  21. int colonne;
  22. } coordonnee_t;
  23.  
  24. // Un chemin se compose d'un tableau de coordonnees (qu'il faut
  25. // allouer dynamiquement) et du nombre de cases dans le chemin
  26. typedef struct CHEMIN {
  27. coordonnee_t * coordonnees;
  28. int taille;
  29. } chemin_t;
  30.  
  31. /* Declaration des fonctions */
  32.  
  33. //La fonction creerMatrice prend en parametre une matrice creuse
  34. //decrite sous forme CSR et renvoie le pointeur vers la matrice
  35. //correspondante.
  36. labyrinthe creerMatrice (unsigned int lignes, unsigned int colonnes, char* A, char* IA, char* JA);
  37.  
  38. // La fonction afficherLabyrinthe affiche le labyrinthe fourni en
  39. // parametre
  40. void afficherMatrice( labyrinthe lab, unsigned int lignes, unsigned int colonnes );
  41.  
  42. // La fonction deplacementsPossibles retourne le nombre de deplacements
  43. // possibles depuis la position courante, et remplit le tableau
  44. // coordPossibles avec les coordonnees accessibles
  45. int deplacementsPossibles( labyrinthe lab, unsigned int largeur, unsigned int longueur, coordonnee_t posCourante, coordonnee_t* coordPossibles);
  46.  
  47. // La fonction verifChemin verifie que le chemin fourni en parametre
  48. // est correct : les deplacements sont valides et le chemin rejoint
  49. // l'entree du labyrinthe a l'une de ses sorties. La fonction retourne
  50. // 1 si le chemin est valide et 0 sinon
  51. char verifierChemin( chemin_t ch, labyrinthe lab, unsigned int largeur, unsigned int longueur, coordonnee_t depart );
  52.  
  53. // La fonction afficherChemin affiche le chemin fourni en parametre
  54. void afficherChemin( chemin_t ch );
  55.  
  56.  
  57.  
  58. // La fonction plusCourtCheminDynamique trouve le plus court chemin
  59. // valide reliant l'entree du labyrinthe et l'une de ses sorties, en
  60. // explorant par programmation dynamique. Le chemin trouve est renvoyé
  61. // par la fonction. Le labyrinthe M2 permet de connaitre la distance
  62. // minimale separant chaque case deja visitee a la case de depart. Les
  63. // modifications sur le labyrinthe M2 doivent etre realisees en place
  64. // et non sur une copie de M2. Cette fonction peut faire appel a des
  65. // fonctions auxiliaires, par exemple une fonction qui explore les
  66. // chemins et ecrit dans M2, et une fonction qui construit le chemin
  67. // solution à la fin.
  68. chemin_t plusCourtCheminDynamique ( labyrinthe lab, labyrinthe M2, unsigned int largeur, unsigned int longueur, coordonnee_t depart);
  69.  
  70.  
  71. chemin_t* tousPlusCourtsChemins(labyrinthe lab, labyrinthe M2, unsigned int largeur, unsigned int longueur, coordonnee_t depart);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement