LECȚIE C++ · Labirint: de la vecini la drumul minim

BFS pas cu pas cu o coadă

Învață pas cu pas, apoi exersează.

Explicație

Include #include <queue>, #include <vector> și #include <utility>. Reprezintă celulele cu pair<int,int>. Creează queue<pair<int,int>> q și o matrice dist cu valoarea -1 peste tot. Dacă startul este liber, setează dist[0][0]=0 și adaugă {0,0} în q. Cât timp coada nu este goală, extrage celula din față și încearcă patru direcții folosind vectorii di={-1,1,0,0} și dj={0,0,-1,1}. Pentru fiecare vecin verifică limitele, absența peretelui și dist[ni][nj]==-1. Apoi setează dist[ni][nj]=dist[i][j]+1 și îl adaugi în coadă. La final, dist[n-1][m-1] este numărul minim de pași sau -1 dacă nu există drum. Pentru start ori destinație blocată, răspunsul este -1.

Exersează în CodePath

Creează un cont gratuit pentru a accesa editorul, testele, feedbackul și progresul cursului.

Începe gratuit

Ai deja cont? Deschide activitatea

BFS pas cu pas cu o coadă | C++ explicat | CodePath