graphlogo

Wydział Matematyki i Informatyki

Uniwersytetu Mikołaja Kopernika w Toruniu

Programowanie II 2023/24 (grupa LF)

[Z2_2] Mapa
Data zakończenia: 2024-01-23 00:00
Języki: cpp
Limit czasu: 1.0 s
Limit pamięci: 10 MB
Limit rozmiaru rozwiązania: 100 kB




Zadanie:
Napisz program, który znajdzie najkrótsze [najmniej kosztowne] przejście w labiryncie z punktu początkowego do końcowego. Mapa przedstawiona jest za pomocą znaków, gdzie:


0 – pozycja początkowa [koszt wejścia to 1]
1 – cel [koszt wejścia to 1]
‘_‘ – puste pole [koszt wejścia to 1]
. – trudny teren [koszt wejścia to 2]
X – pole niedostępne


Podróż zaczyna się z kosztem = 0, z pola ‘0’ (ale wejście na to pole kosztuje 1 – patrz przykład).


Pola 0 i 1 zawsze występują na mapie w jednym egzemplarzu.


Poruszanie się poza mapą jest niedozwolone.


Wejście:
Dwie liczby w, h oznaczające szerokość i wysokość mapy. Następnie h ciągów znaków o długości w reprezentujące kolejne wiersze mapy.


Wyjście:
liczba całkowitoliczbowa reprezentująca najmniejszy koszt wymagany do osiągnięcia celu. Jeśli nie istnieje poprawna droga, zwróć -1.


Przykład:


in:
5 3
0__X_
_.X__
_...1
    
out:
10


Wyjaśnienie:
Całkowity koszt to 10, ponieważ przejście przez czerwone pola (0, _ i 1) kosztuje 1, a przez niebieskie (.) kosztuje 2. W sumie koszt najkrótszej drogi do celu to 1 + 1 + 1 + 2 + 2 + 2 + 1 = 10


//std::cin >> c; gdzie c jest typu char wczyta pojedynczy znak


//do rozwiązania zadania można wykorzytać funkcję rekurencyjną




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