graphlogo

Wydział Matematyki i Informatyki

Uniwersytetu Mikołaja Kopernika w Toruniu

1inf 2023/2024 - Programowanie I, LB

[c9] Labirynt
Data zakończenia: 2024-04-19 12:01
Języki: c
Limit czasu: 1.0 s
Limit pamięci: 5 MB
Cel
Zadanie alokację pamięci, na tablice oraz na poszukiwanie (rekurencję) w szerz.


Problem
Studenci stworzyli robota, który ma poruszać się po labiryncie. Robot ma skanować układ labiryntu i wyszukiwać drogę o minimalnej długości do wskazanego punktu. Robot może poruszać się w 4 kierunkach (do przodu, do tyłu, w prawo i w lewo) i ma się przemieścić od punktu A do punktu B. Podczas przemieszczania się robot nie może opuścić labiryntu. Zadanie polega na ustaleniu minimalnej długości drogi (jaką może przebyć robot) pomiędzy wskazanymi punktami A i B. (Oczywiście dróg o tej długości może być więcej niż jedna.)

Zadanie
Napisz program, który rozwiąże powyższy problem.
Dane wejściowe mają następującą postać
  • Program na wejściu otrzymuje najpierw dwie wartości całkowitoliczbowe, kolejno m i n, odpowiadające wymiarom labiryntu. Można przyjąć, że każda z nich jest nie większa niż 30.
  • Następnie wczytuje po kolei n linijek o długości m, składających się ze znaków '.' (kropka), 'X' (duży "X"), A i B, gdzie
    • '.' (kropka) oznacza korytarz (po którym robot możne się poruszać),
    • 'X' (duży "X") oznacza ścianę,
    • A oznacza punkt startowy,
    • B oznacza punkt końcowy.
    Wskazówka: w tym wypadku wygodniej jest wczytywać te znaki całymi liniami, przykładowo funkcją fgets, która była omawiana w końcówce czwartego wykładu z materiałów do tego przedmiotu z lat poprzednich, które dostępne są w serwisie Moodle (https://moodle.mat.umk.pl/course/view.php?id=2633).

Jako dane wyjściowe program zwraca pojedynczą wartość równą długości drogi o minimalnej długości.

Jeśli nie istnieje droga z punktu A do punktu B, to powinna zostać wypisana wartość -1.

Przykład
Wejście
23 8
XXX.X.X.XXXXXXXXXXXXXX.
X.X.X.X...X...X...X...X
X...X...X.X.X.X.X.X.X..
X.X...X.X...X...X...X.X
.AX.X.X...X...X.X.X.X..
X.X.X...X...X.X...X.X.X
X...X.X...X.X...X.XB.XX
XX......X...XXX.X.X.X.X
Wyjście
32
Powrót
© 2009-2020 • ZawodyWeb Team
IKS - Inwestycja w Kierunki Strategiczne na Wydziale Matematyki i Informatyki UMK

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego