Bonjour,
Je veux trouver le chemin le plus court de mon labyrinthe parmi deux chemins.
L'entrée est toujours en 1x2. Initialement la case 2x2 vaut 01011111111 1000000001 1011111101 1010001101 1010101101 1010101101 1010101101 1000101101 1111100001 1111111101
La sortie est toujours en 10x9. Initialement la case 9x9 vaut 0
Pour savoir lequel des deux chemins est le plus court,
je décide de compter le nombre de zéro entre l'entreé et la sortie.
Je remplace la case 2x2 par un 2
Je regarde si autour de ce 2 il y a des chemins, cad des zéros.
Je regarde en haut, en bas, à gauche et à droite.
Si j'en trouve un, je le remplace par la valeur 2+1
Ainsi de suite, grâce a une double boucle for, je scanne
ma matrice et remplace tout les zéros, par (le nombre qui
précéde + 1)
Je m'arrête quand la case 9x9 n'est plus nulle
Mon code est le suivant :
Mais il ne marche pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function A=labyrinthe(A) A(2,2)=2 while A(9,9)~=O for i= 2 : 9 for j= 2 : 9 if A(i,j)==1 return; if A(i,j)==0 return; elseif A(i+1,j)==0 A(i+1,j)=A(i,j)+1; elseif A(i-1,j)==0 A(i-1,j)=A(i,j)+1; elseif A(i,j+1)==0 A(i,j+1)=A(i,j)+1; elseif A(i,j-1)==0 A(i,j-1)=A(i,j)+1; end end end
Pouvez-vous me dire pourquoi. Merci infiniment.
Partager