Program obszary za pomocą rekurencji.

0

Witam !

Mam problem z napisaniem programu który wczytuje określoną tablicę z pliku a następnie oblicza obszary i wskazuje ile ich jest. W programie ma być użyta rekurencja. Kompletnie nie wiem jak się za to zabrać, czy mógłby ktoś coś podpowiedzieć ? W załączniku jest przedstawione dokładne polecenie.

0

Pętla po tablicy plus dfs/bfs wywołany dla każdego obszaru. Autorzy z tego co widzę zalecają użycie BFSa.
http://pl.wikipedia.org/wiki/Przeszukiwanie_wszerz
http://en.wikipedia.org/wiki/Breadth-first_search

0

Skoro trzymasz sobie tą mapkę w postaci tablicy NxN to utwórz sobie dodatkową tablicę bool NxN (ewentualnie hashtable jak już się z tym spotkałeś) 'explored' i przejdź przez każdy element mapki. Jeśli explored[i,j] = false to wywołaj funkcje CountWhitePlaces(i, j) i jak zwróci coś innego od zera to zwiększ sobie licznik bialych obszarow oraz dodaj do jakiegoś wektora rozmiar obszaru. Funkcja CountWhitePlaces(i, j) powinna zwracać inty. Zastanów się jaki warunek na początku CountWhitePlaces() powinieneś dodać - (czy pole jest białe, czy indeksy nie wykraczaja poza tablice "mapki"). Jeśli warunek zostanie spełniony to oznacz pole jako odwiedzone i wywołaj rekurencyjnie CountWhiteSpaces() (tyle razy ile sąsiadów z odpowiednimi argumentami) + 1, jeśli nie to zwróc zero. Zastanów się na jakie sąsiedne pola możesz przejść z danego kwadraciku (to będe argumenty z jakimi wywołasz rekurecyjnie tą funkcję , tyle ile jest sąsiadów tyle razy musisz wywołać tą funkcję).

1 użytkowników online, w tym zalogowanych: 0, gości: 1