Próbuję rozwiązać problem związany z wykresami w języku Python. Ponieważ jest to problem programowania comeptitive, nie używam żadnych innych pakietów 3rd party.Modelowanie wykresu w języku Python
Problem przedstawia wykres w formie kwadratowej siatki 5 X 5
. Zakłada się, że bot znajduje się na pozycji dostarczonej przez użytkownika w sieci. Siatka jest indeksowana pod numerem (0,0)
w lewym górnym rogu i (4,4)
w prawym dolnym rogu. Każda komórka w siatce jest reprezentowana przez dowolny z 3 następujących znaków. "b
" (wartość ascii 98) wskazuje aktualną pozycję bota, "d
" (wartość ascii 100) oznacza brudną komórkę, a "-" (wartość ascii 45) wskazuje czystą komórkę w siatce. Na przykład poniżej znajduje się siatka próbka gdzie bot jest 0 0
:
b---d
-d--d
--dd-
--d--
----d
Celem jest, aby oczyścić wszystkie komórki w siatce, w minimalnej liczbie kroków. operacja jest definiowana jako zadania, w przypadku gdy i) Bot zmienia to pozycję ii) Bot zmianę stanu komórki (od D do -)
Załóżmy, że początkowo położenie oznaczone jako b
nie musi być oczyszczone. BOT może poruszać się w GÓRĘ, DÓŁ, LEWO i PRAWO.
Moje podejście
Czytałem kilka tutoriali na wykresach i postanowił modelować wykres jako macierz sąsiedztwa z dnia 25 x 25 gdzie 0 oznacza brak ścieżek i 1 reprezentujące ścieżki w macierzy (ponieważ możemy poruszać się tylko w 4 kierunkach). Następnie zdecydowałem się zastosować algorytm najkrótszej ścieżki Floyd Warshell do wszystkich par, a następnie podsumować wartości ścieżek. Ale mam wrażenie, że to nie zadziała. Jestem w delimie, że problem jest albo jeden z następujących:
i) Minimalne drzewo opinające (którego nie jestem w stanie zrobić, ponieważ nie jestem w stanie modelować i przechowywać siatki jako wykres).
ii) A * Search (Ponownie dzikie domysły, ale ten sam problem tutaj, nie jestem w stanie poprawnie modelować siatki jako wykresu).
Byłbym wdzięczny, gdybyś mógł zasugerować dobre podejście do takich problemów. Pomocna byłaby także podpowiedź i pseudokodowanie dotyczące różnych form problemów opartych na wykresach (lub odnośnikach do nich). Dziękujemy
Cóż, nie jest to konkurs, jest to forum o nazwie HackerRank, a moje podejście do problemu było jasne, a nigdzie mnie nie prowadzi. – kaalobaadar
Czy problem określa ograniczenie liczby zabrudzonych kwadratów? –
Czy macierz jest ustawiona na 5 * 5? – Skyler