Documente Academic
Documente Profesional
Documente Cultură
Miana Arișanu
Algoritmul lui Lee este folosit pentru determinarea unui traseu de lungime minimă într-un
labirint între două celule stabilite.
Haideți să-l ajutăm pe șoricel să ajungă la brânză!
Pentru a reține
int a[177][177]; // n<=175, adaugăm 2 pentru bordare
int cx[31000],cy[31000];
int dx[]= {-1,0,1, 0};
int dy[]= {0, 1,0,-1};
Prof. Miana Arișanu
void drum (int l, int c) // afișează un drum de lungime minimă de la (x1,y1) la (l,c)
{
if (l!=x1 || c!=y1)
if (a[l-1][c]==a[l][c]-1) drum (l-1,c);
else
if (a[l+1][c]==a[l][c]-1) drum (l+1,c);
else
if (a[l][c-1]==a[l][c]-1) drum (l,c-1);
else drum (l, c+1);
cout<<l<<’ ‘<<c<<’\n’;
}
Observații finale
1. https://www.pbinfo.ro/probleme/2167/alee
2. Dacă există, drumul nu e unic, poate fi reconstituit pornind de la pozitia finala
3. Algoritmul lui Lee poate fi implementat și 3D, atunci când labirintul este într-un
paralelipiped https://www.infoarena.ro/problema/traseu3
4. O implementare mai eficientă a algoritmului lui Lee utilizează containerul queue din
STL