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 : 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
Mais il ne marche pas...

Pouvez-vous me dire pourquoi. Merci infiniment.