Cod sursa(job #575942)

Utilizator andumMorie Daniel Alexandru andum Data 8 aprilie 2011 23:03:07
Problema Numerele lui Stirling Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
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
}