zadania

Transkrypt

zadania
!
C - The Game.
Rules!
10-28-2012
Miejsce Akcji: Pasadena CA, USA.
Śpioch, bo tak się nazywa uśpiony od wielu lat agent, zamieszkały w Pasadena w sanie
California w USA, wypłynął ostatnio na wierzch dzięki informacją które udało się uzyskać
po skatalogowaniu ich twoim algorytmem B-drzew. Niestety, skoro my uzyskaliśmy takie
informacje z ich intelu, to Oni też wiedzą o jego istnieniu.
Nasz śpioch jednak jest bardzo specyficznym człowiekiem i nie potrafi trzymać tajemnicy.
Dlatego też musimy do niego dotrzeć wcześniej niż nasi wrogowie. Aby jednak uzyskać
jego zaufanie będziemy musieli zagrać z nim w jedną z jego ulubionych gier.
Gra polega na zbudowaniu drzewa binarnego dla podanego słowa, a następnie
określeniu na ile sposobów można poprzestawiać niepowtarzające się literki aby uzyskać
takie samo drzewo BST. Jeśli jest mniej niż 25 takich sposobów, to należy je podać
przeciwnikowi wszystkie.
Jako brainiac w naszej agencji, to ty zostałeś wyznaczony do tego zadania. Nie lekceważ
jednak swojego przeciwnika. Jego mózg działa jak komputer. Polecam więc napisanie
odpowiedniego programu, który pomoże Ci wygrać z Dr Sheldonem Cooperem.
Zasady gry: Przeciwnik podaje słowo (a dokładniej ciąg znaków), dla którego następnie
musisz zbudować drzewo BST. Następnie na wyjściu podajesz wysokość drzewa, ilość liter
w drzewie (== ilość różnych liter w podanym ciągu (słowie)) i ilość możliwych permutacji
tych liter takich, które dają dokładnie takie samo drzewo. Ponadto jeśli ilość tych
permutacji jest mniejsza niż 25 to należy wypisać je wszystkie.
Pusta linia (znak końca linii na jej początku ‘\n’) oznacza zakończenie gry. Jeśli wygrasz
wszystkie rozdania, czyli podasz poprawne wyniki dla wszystkich zadanych ciągów,
wygrywasz.
Wejście programu:
Linia i:
String — ciąg znaków podany przez przeciwnika;
// (i = 0, 1, …) dopóki nie otrzymasz linii zawierającej jedynie znak nowej linii ‘\n’;
Wyjście z programu zrozumiałe dla Sheldona ma postać:
N
H
P
LISTA PERMUTACJI
N — to liczba różnych liter w słowie (liczba węzłów i liści w drzewie BST);
H — to wysokość utworzonego drzewa BST;
P — to liczba możliwych permutacji tworzących to samo drzewo BST;
LISTA PERMUTACJI — opcjonalnie, tzn. tylko w przypadku gdy liczba permutacji dających
to samo drzewo BST jest mniejsza niż 25;
Lista permutacji powinna być zaaranżowana po 3 słowa na linię oddzielone jednym
znakiem tabulacji poziomej ‘\t’;
SLOWO1
SLOWO2 SLOWO3
SLOWO4
SLOWO5
…
…
…
...
Powodzenia Agencie.
—1—
Rules!
10-28-2012
Przykładowe dane wejściowe i wyniki jakie powinieneś podać Sheldonowi.
Przykładowe dane wejściowe:
!
fig. 1 — Yours software input data
Dane które powinieneś wyprodukować z tego wejścia:
fig. 2 — Yours software output data
—2—

Podobne dokumenty