Pannenkoek2012 ma na celu ukończenie Super Mario 64 przy jak najmniejszej liczbie naciśnięć przycisku A, co powoduje, że Mario skacze. Każda „prasa” składa się z trzech części:
- Naciśnięcie przycisku
- Trzymając go przez dowolny czas
- Zwolnienie go
Zobacz to wideo (1:15 - 3:23), aby uzyskać świetne wyjaśnienie obejmujące powyższy obraz. (Jednak to wyzwanie nie będzie korzystało z terminologii pół-A i będzie stanowić przeszkodę wymagającą zwolnienia A.)
Zadanie:
Biorąc pod uwagę sekwencję przeszkód wymagających naciśnięcia (P), przytrzymania (H) lub zwolnienia (R) przycisku A, wypisz najmniejszą liczbę naciśnięć wymaganych do ich pokonania w podanej kolejności. Przycisk A początkowo nie jest trzymany.
Formalnie sformułowane: biorąc pod uwagę ciąg S znaków PHR, rozważ ciągi znaków (PH*R)*zawierające S jako podsekwencję i wyprowadzaj najmniejszą możliwą liczbę Ptakich ciągów. Lub, alternatywnie, znajdź najmniejszą liczbę części formy, na P?H*R?którą można podzielić S.
Przykład
Spójrzmy na dane wejściowe RHRPHHHR. Przycisk A nie zaczyna się przytrzymywać, więc pokonanie początkowej przeszkody Rwymaga naciśnięcia i zwolnienia przycisku (naciśnij # 1). Następnie musimy przytrzymać przycisk H, który ponownie wymaga pierwszego naciśnięcia (naciśnij # 2). Następnie można go później zwolnić, aby zaspokoić Rpóźniej. Wreszcie, pozostałe PHHHRmożna zaspokoić pojedynczym naciśnięciem (naciśnij 3), a następnie przytrzymaniem HHHi zwolnieniem R. Tak więc liczba wyjść wynosi 3.
Innym sposobem, aby to zobaczyć, jest to, że możemy podzielić ciąg wejściowy na 3 części formularza, w PHH..HHRktórych litery można pominąć.
R
HR
PHHHR
Format wejściowy
Dane wejściowe będą listą lub ciągiem elementów reprezentujących naciśnięcie, przytrzymanie i zwolnienie jako wybór:
P, H, Rp, h, r1, 2, 30, 1, 2
dopasowane w podanej kolejności. Dane wejściowe nie będą puste.
Przypadki testowe:
P 1
H 1
R 1
HP 2
RHP 3
HHR 1
PHRH 2
RHRPHHHR 3
HHHHHH 1
PPRRHHPP 6
HPPRHRPRHPPRHPPHRP 12
PRHRHPHHPRRRHPPRHHPPRRRHRHPRPHPRPRHHRPPPRHPRP 28
Tabela liderów:
