Documente Academic
Documente Profesional
Documente Cultură
Lee-Algoritm
Complexitate:
Creați o coadă goală și căutați o celulă sursă la distanță 0 de la sursă (în sine)
și marcați-o ca vizitată:
1.Faceți până când coada nu este goală
2.Pop nod din față din coadă
3.Dacă nodul popped este nodul de destinație,
4.Atunci întoarceți distanța acestuia altceva pentru fiecare din cele 4 celule
adiacente ale celulei curente,
5.Introducem fiecare celulă valabilă în coadă cu +1 distanță și le marcăm ca
vizitate
6. Dacă toate nodurile din coadă sunt procesate și destinația nu este atinsă,
atunci returnează false
#include <iostream>
#include <queue>
#include <climits>
#include <cstring>
using namespace std;
// M x N matrix
#define M 10
#define N 10
if (min_dist != INT_MAX)
cout << "The shortest path from source to destination "
"has length " << min_dist;
else
cout << "Destination can't be reached from given source";
}
// Shortest path in a Maze
int main()
{
// input maze
int mat[M][N] =
{
{ 1, 1, 1, 1, 1, 0, 0, 1, 1, 1 },
{ 0, 1, 1, 1, 1, 1, 0, 1, 0, 1 },
{ 0, 0, 1, 0, 1, 1, 1, 0, 0, 1 },
{ 1, 0, 1, 1, 1, 0, 1, 1, 0, 1 },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 1 },
{ 1, 0, 1, 1, 1, 0, 0, 1, 1, 0 },
{ 0, 0, 0, 0, 1, 0, 0, 1, 0, 1 },
{ 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 1, 1, 1, 1, 1, 0, 0, 1, 1, 1 },
{ 0, 0, 1, 0, 0, 1, 1, 0, 0, 1 },
};
return 0;
}
Concluzii