Witam, mam dość głupi problem - naczytałem się tyle tematów o tym, że jestem w totalnej kropce. Mianowicie chodzi mi o algorytm LIFO użyty w labiryncie. Poniższy kod przedstawia metodę przeszukiwania labiryntu : punkt startowy podany wcześniej ( tak samo jak i wyjściowy ), 0 - oznacza ścianę, 1 - podstawowa droga, każdy pkt w którym byłem podmieniam w macierzy na nr kroku.
// Poruszanie sie kolejnosc : dol, prawo, gora, lewo
void Idz(){
stos = new Stos(kolumna*wers);
// chod = new String[kolumna*wers];
int x = startX;
int y = startY;
Point tmp;
stos.Push(x, y);
try{
for(;;){
if((x == endX)&(y == endY)){
break;
}else if(lab[x+1][y] == 1){
x++;
lab[x][y] = krok++;
stos.Push(x, y);
// Kroki();
}else if(lab[x][y+1] == 1){
y++;
lab[x][y] = krok++;
stos.Push(x, y);
// Kroki();
}else if(lab[x-1][y] == 1){
x--;
lab[x][y] = krok++;
stos.Push(x, y);
// Kroki();
}else if(lab[x][y-1] == 1){
y--;
lab[x][y] = krok++;
stos.Push(x, y);
// Kroki();
}else{
tmp = stos.Pop();
System.out.println(tmp);
x = tmp.x;
y = tmp.y;
}
}
}catch(ArrayIndexOutOfBoundsException e1){
System.out.println(e1);
}
}
Pytanie główne : Czy jest to poprawnie wykonany algorytm LIFO ? Z tego co czytałem, nie ma ogólnie przyjętej zasady w który pkt mamy wybrać się kolejny, jeśli pkt startowy ma klika możliwości. Ja przyjąłem, że najpierw w dół a potem odwrotnie do wsk. zegara.