Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace dfs___lavirint
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- int[,] polja = new int[,]
- {
- {0, 0, 0, 0, 0 },
- {0, 0, -1, -1, -1 },
- {0, 0, -1, -1, 0 },
- {0, 0, 0, 0, 0 },
- };
- int brojKolonaMatrice = polja.GetLength(1);
- Stack<int> poljaZaObilazak = new();
- int brojacPoteza = 1;
- poljaZaObilazak.Push(0);
- int[,] validniPotezi =
- {
- { 0, 1 }, //desno
- { 1, 0 }, //dole
- { 0, -1 }, //levo
- { -1, 0 }, //gore
- };
- while (poljaZaObilazak.Any())
- {
- int pozicijaPolja = poljaZaObilazak.Pop();
- int redPolja = pozicijaPolja / brojKolonaMatrice;
- int kolonaPolja = pozicijaPolja % brojKolonaMatrice;
- polja[redPolja, kolonaPolja] = brojacPoteza;
- brojacPoteza++;
- Console.WriteLine($"obilazak polja {pozicijaPolja} - ({redPolja},{kolonaPolja})");
- for (int i = 0; i < validniPotezi.GetLength(0); i++)
- {
- int noviRed = redPolja + validniPotezi[i, 0];//i je cela "zagrada" u validniPotezi, a 0 ce dati red
- int novaKolona = kolonaPolja + validniPotezi[i, 1]; // a 1 ce dati kolonu
- if (noviRed >= 0 && noviRed < polja.GetLength(0) && novaKolona >= 0 && novaKolona < polja.GetLength(1) && polja[noviRed, novaKolona] == 0)
- {
- int novaPozicija = noviRed * brojKolonaMatrice + novaKolona;
- poljaZaObilazak.Push(novaPozicija);
- polja[noviRed, novaKolona] = -10 ;
- }
- }
- }
- IspisisMatricu(polja);
- }
- static void IspisisMatricu(int[,] polja)
- {
- for (int i = 0; i < polja.GetLength(0); i++)
- {
- for (int j = 0; j < polja.GetLength(1); j++)
- {
- Console.Write($"{polja[i, j]}\t");
- }
- Console.WriteLine();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement