Zadania aglorytmy - jaki zastosować

0

Jak wyżej, Jaki zastosować algorytm w poniższych zadaniach? Jestem początkująca, więc bardzo proszę o jakieś wskazówki.

Zad.1.
Generator Napisów Cyklicznych jest programowalnym urządzeniem do generowania napisów. Posiada 26 rejestrów, oznaczonych literami od A do Z. Każdy z nich przechowuje jeden napis. Zbiór poleceń dla generatora jest następujący:

ZERUJ r
usunięcie zawartości rejestru r
WYPISZ r
wpisanie na ekran zawartości rejestru r oraz znaku nowej linii
ODWROC r
odwrócenie kolejności napisu w rejestrze r (z ABCDE dostajemy EDCBA)
USTAW r napis
wpisanie do rejestru r napisu napis
PRZESUN r n
przeniesienie n początkowych znaków rejestru r na jego koniec; dla A=ABCDEF PRZESUN A 2 spowoduje, że A=CDEFAB
USUN r n
usunięcie n początkowych znaków rejestru r
DOKLEJ r s
doklejenie zawartości rejestru s na koniec rejestru r; po wykonaniu tej operacji rejestr s jest zerowany
SKOPIUJ r s
doklejenie zawartości rejestru s na koniec rejestru r; po wykonaniu tej operacji rejestr s zachowuje pierwotną wartość
MIESZAJ r s
wstawienie do rejestru r napisu zawierającego na przemian znaki z r i s, gdy zawartość jednego z rejestrów się skończy, dodajemy tylko znaki z drugiego napisu; po wykonaniu tej operacji rejestr s jest zerowany; np. dla A=ABC i B=123 wykonanie MIESZAJ A B spowoduje, że A=A1B2C3 a B=puste r i s oznaczają rejestry (jedną z liter od A do Z), w każdym poleceniu r będzie różne od s. Napisami będą ciągi znaków składające się z liter (dużych i małych), cyfr, nawiasów, podkreślnika (_) lub operatorów +, -, *, /.Zaraz po uruchomieniu wszystkie rejestry przechowują puste napisy. Zaimplementuj Generator Napisów Cyklicznych.
Wejście
Na wejściu podane będą polecenia dla generatora.
Wyjście
Na wyjściu należy wypisać kolejne wyniki operacji WYPISZ.
Przykład

Wejście
USTAW A ABCDEF
WYPISZ A
PRZESUN A 2
WYPISZ A
USUN A 3
WYPISZ A
ODWROC A
WYPISZ A
ZERUJ A
WYPISZ A
USTAW A 123
USTAW B 456
DOKLEJ A B
WYPISZ A
USTAW B STUVWXYZ
MIESZAJ A B
WYPISZ A
USTAW A *
WYPISZ A
SKOPIUJ B A
DOKLEJ A B
WYPISZ A
SKOPIUJ B A
DOKLEJ A B
WYPISZ A
SKOPIUJ B A
DOKLEJ A B
WYPISZ A

Wyjście
ABCDEF
CDEFAB
FAB
BAF

123456
1S2T3U4V5W6XYZ
*
**



Zad.2.

Kałuże
Dane testowe

Dany jest plac. Plac wyłożony jest płaskimi płytami o wymiarach 1m x 1m. Plac otoczony jest trawą. Wykonawca placu nie postarał się, więc każda płyta znajduje się na nieco innej wysokości (ale każda płyta leży idealnie poziomo). Zaczyna padać deszcz. Wyznacz, gdzie utworzą się kałuże i jaka będzie całkowita objętość wody, w litrach, która zatrzyma się w kałużach. Jeżeli płyty stykają się rogami, tworzą szczelne połączenie (woda nie przepływa przez "rogi"). W dowolny obszar trawy może wsiąknąć dowolna objętość wody w dowolnie krótkim czasie.
Wejście
Na wejściu zostaną podane wymiary placu: szerokość w i wysokość h w metrach. Następnie wystąpi wh nieujemnych liczb opisujących wysokość w milimetrach nad poziomem trawy (trawa znajduje się na poziomie 0) na której znajdują się kolejne płyty. Każde kolejne w liczb opisuje kolejny wiersz. Wysokość i szerokość placu nie przekroczą 1536 metrów.
Wyjście
Na wyjściu należy wypisać: w pierwszym wierszu objętość wody (w litrach) która zatrzymała się w kałużach (wartość ta nie przekroczy zakresu liczb typu int). W kolejnych w
h znakach (po każdych w znakach powinien pojawić się znak nowej linii) należy opisać miejsca pojawiania się kałuż: . (kropka) oznacza, że kałuża się nie utworzy, # (krzyżyk) oznacza, że płyta będzie zalana wodą na wysokość co najmniej 1mm.
Przykład

Wejście
8 8
0 0 0 0 0 1 0 0
0 1 1 1 0 1 0 0
0 1 0 2 1 2 4 5
0 1 1 2 0 2 4 5
0 3 3 3 3 3 3 4
0 3 0 1 2 0 3 4
0 3 3 3 3 3 3 0
0 0 0 0 0 0 0 0

Wyjście
11
........
........
..#.....
....#...
........
..####..
........
........

0
  1. Jedyny algorytm jaki potrzebujesz masz opisany.
  2. DFS
0

Jakiś czas temu robiłem bardzo podobne zadanie do tego drugiego (w sumie nawet takie same) - jest to zadanie z olimpiady informatycznej i jeżeli są mocne testy to DFS nie wystarczy, bo przeciąży się stos (w zadaniu, które robiłem tak właśnie było przy DFS-ie), dlatego bezpieczniej użyć BFS-a. Jeżeli odpowiednio długo poszukasz to znajdziesz rozwiązanie w niebieskiej książeczce z olimpiady, ale jak się wie, że to BFS, to jest to dosyć proste (ale wzorcówka jest w czasie O(n^2), czyli liniowa względem rozmiaru danych, więc trochę trzeba pomyśleć). O BFS-ie/DFS-ie możesz mnóstwo przeczytać w sieci lub w książkach, o dobrej implementacji BFS-a na macierzy sąsiedztwa możesz posłuchać tutaj: http://was.zaa.mimuw.edu.pl/?q=node/31

0

Witam,

Obecnie robię identyczne zadanie jak opisane wyżej zad.2. Mam problem z poszukiwaniem kałuż. Czy ktoś mógłby podzielić się podpowiedziami/pomysłami? :)

Pozdrawiam,
Patryk

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