M2

13_2a

526
Słowo definiujemy jako ciąg złożony z małych liter alfabetu angielskiego. Niech s[1..n] będzie słowem o długości n > 0.
Sufiksem słowa s nazywamy każde jego podsłowo kończące na ostatniej pozycji słowa s. Sufiks s[k..n] nazywamy k-tym sufiksem.

Poniżej zapisano funkcję czy_mniejszy(n, s, k1, k2). Wynikiem funkcji jest wartość PRAWDA, gdy sufiks s[k1..n] jest mniejszy w porządku alfabetycznym od sufiksu s[k2..n] oraz FAŁSZ w przeciwnym przypadku.
Specyfikacja
Dane:
n – długość słowa,
s[1..n] – słowo zapisane jako tablica znaków (numerowanych od 1),
k1 – numer pierwszego sufiksu (1 ≤ k1 ≤ n),
k2 – numer drugiego sufiksu (1 ≤ k2 ≤ n, k1 ≠ k2).
Wynik:
PRAWDA jeśli sufiks s[k1..n] jest mniejszy w porządku alfabetycznym od s[k2..n], albo FAŁSZ – w przeciwnym wypadku.

czy_mniejszy (n, s, k1, k2)
i ← k1
j ← k2
dopóki ( i ≤ n oraz j ≤ n ) wykonuj
jeżeli ( s[i] == s[j] )
i ← i + 1
j ← j + 1
w przeciwnym razie
jeżeli ( s[i] < s[j] ) zakończ z wynikiem PRAWDA
w przeciwnym razie zakończ z wynikiem FAŁSZ
jeżeli ( j ≤ n ) zakończ z wynikiem PRAWDA
w przeciwnym razie zakończ z wynikiem FAŁSZ






Pierwsze dwie instrukcje jeżeli w funkcji czy_mniejszy wykonują porównania dwóch znaków słowa s.
Przykład:
dla danych s = mascarpone , k1 = 5, k2 = 2 algorytm wykona 3 porównania:
• (pierwsza instrukcja jeżeli) – sprawdzenie, czy s[5] = s[2]
• (pierwsza instrukcja jeżeli) – sprawdzenie, czy s[6] = s[3]
• (druga instrukcja jeżeli) – sprawdzenie, czy s[6] < s[3]

Podaj przykład słowa s, o długości ≤ 10 oraz liczb k1, k2, k1 ≠ k2, dla których funkcja czy_mniejszy wykona dokładnie 6 porównań w pierwszej instrukcji jeżeli.

s = _______________________ , k1 = ___________, k2 = ____________
anagram.txt fotowoltaika.txt instalacje.txt kraje.txt slowa1.txt slowa2.txt slowa3.txt slowa4.txt urzadzenia.txt r1.jpg r2.jpg r3.jpg r4.jpg