Pagini recente » Cod sursa (job #832027) | Cod sursa (job #947446) | Cod sursa (job #2768018) | Cod sursa (job #1740722) | Cod sursa (job #575942)
Cod sursa(job #575942)
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
p=u=1; min=2000000; //numarul minim de pasi va fi retinut in variabila min
c[p].l=xs; c[p].c=ys; //se adauga in coada punctul de start
while (p<=u)
{
la=c[p].l; //linia actuala
ca=c[p].c; //coloana actuala
for (i=0;i<4;i++) //se verifica fiecare vecin din cele 4 directii de mers posibile
{
lv=la+dx[i]; //linia viitoare
cv=ca+dy[i]; //coloana viitoare
if (A[lv][cv]==0) //se verifica daca elementul vecin nu a mai fost vizitat
{
A[lv][cv]=A[la][ca]+1; //numarul minim de pasi pentru a ajunge in elementul vecin este numarul minim
//pentru a ajunge in elementul curent + 1
if (A[lv][cv]<min && lv==xs && cv==ys) //se verifica daca s-a ajuns in punctul de stop
min=A[lv][cv]; //si daca s-a gasit o solutie mai mica decat cea curenta
u++;
c[u].l=lv; //se adauga elementul vecin in coada
c[u].c=cv;
}
}
p++; //se trece la urmatorul element din coada
}