Algorytm: Określić kształt dwóch sektorach nakreślonych przez arbitralny ścieżki, a następnie wypełnić jedną

głosy
2

UWAGA: Jest to trudny problem dla każdego, kto lubi problemów logicznych itd

Rozważmy prostokątny dwuwymiarową siatkę o wysokości H i szerokości W. Każda przestrzeń na starcie ma wartość, albo 0 1albo 2. Początkowo każda przestrzeń na starcie jest 0, z wyjątkiem przestrzeni wzdłuż każdego z czterech krawędziach, które są początkowo 2.

Następnie pod dowolną drogą sąsiednich (w pionie lub w poziomie) pomieszczeń siatki. Ścieżka rozpoczyna się na zasadzie 2, a kończy na inny 2. Każda przestrzeń wzdłuż ścieżki jest 1.

Ścieżka dzieli się na dwie siatki „sektorów” 0przestrzeni. Jest to obiekt, który opiera się na bliżej nieokreślonej 0przestrzeni. W „sektor”, który nie zawiera obiektu muszą być wypełnione całkowicie 2.

Zdefiniować algorytm, który określa przestrzenie, które muszą stać się 2od 0, biorąc pod tablicą (lista) wartości ( 0, 1lub 2), które odpowiadają wartościom w siatce, idąc od góry do dołu, a następnie od lewej do prawej. Innymi słowy, element o indeksie 0 w tablicy zawiera wartość lewego górnego miejsca w sieci (początkowo 2). Element o indeksie 1 zawiera wartość przestrzeni w sieci, która znajduje się w lewej kolumnie, a drugi z góry, i tak dalej. Element o indeksie H zawiera wartość przestrzeni w sieci, która znajduje się w najwyższym rzędzie, lecz drugi z lewej strony i tak dalej.

Po zakończeniu działania algorytmu i pusty „sektor” jest całkowicie wypełniona 2s, algorytm samo musi być wystarczająca, aby zrobić ten sam proces ponownie. Druga (i) czas, ścieżka jest nadal poprowadzoną od 2do innego 2, w całej przestrzeni 0, ale „siatka” jest mniejsza, ponieważ 2ów, które są otoczone przez inne 2s nie mogą być dotykane przez ścieżkę (ponieważ ścieżka jest wzdłuż przestrzeni 0).

Dziękuję kogo jest w stanie zorientować się, to dla mnie bardzo dużo. To nie musi być w określonym języku programowania; w rzeczywistości, pseudo-kod lub po prostu angielski jest wystarczające. Dzięki jeszcze raz! Jeśli masz jakieś pytania, po prostu zostawić komentarz i będę określić, co musi być określona.

Utwórz 15/05/2010 o 22:07
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
3

Wydaje mi się, podstawowy wypełnienie powódź algorytm będzie to zadanie:

  • Skanuje tablicę za pierwszą 0znaleźć, a następnie rozpocząć wypełnienie powodzi stamtąd, wypełniając 0region z innej liczby, powiedzmy 3- to jeden z etykietą „sektorów”.
  • Po dokonaniu rejestracji, skanowanie ponownie na 0i powódź wypełnić stamtąd, wypełnienie z 4tego czasu.
  • Podczas obu wypełnień można być sprawdzenie, czy znalazłeś obiektu lub nie; cokolwiek wypełnić go znaleźć w czasie, śledzić tego numeru.
  • Po obu wypełnienia są wykonane, sprawdzić, które policzone region miał w niej przedmiot - powódź wypełnić ten region ponownie, z powrotem z 0tego czasu.
  • Powódź wypełnić inny region ponumerowane 2, i gotowe.

To będzie pracować dla dowolnej konfiguracji sieci, tak długo, jak istnieją dokładnie dwa 0sektory, które są odłączone od siebie; to ponowne zastosowanie tego samego algorytmu dowolną ilość razy, w porządku.

Edit: Drobne poprawki, aby zaoszczędzić przeciwpowodziowe syta lub dwa -

  • Jeśli nie możesz znaleźć swój przedmiot w pierwszej powodzi nadzienia, można zakładać, że inny sektor ma, więc po prostu ponownie napełnić aktualny numer z 2i pozostawić innym sektorze sam (ponieważ już 0-filled).
  • Ewentualnie, jeśli zrobić znaleźć obiekt w pierwszej powodzi nadzienia, można bezpośrednio wypełnić pozostałe sektorowi 2, a następnie ponownie napełnić pierwszy sektor z 0.
Odpowiedział 15/05/2010 o 22:23
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more