Bonjour,
Je veux trouver le chemin le plus court de mon labyrinthe parmi deux chemins.
1011111111
1000000001
1011111101
1010001101
1010101101
1010101101
1010101101
1000101101
1111100001
1111111101
L'entrée est toujours en 1x2. Initialement la case 2x2 vaut 0
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 :
Code: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
Mais il ne marche pas...
Pouvez vous me dire pourquoi. Merci infiniment.
-----