Wstęp do programowania / Ćwiczenia 3: Różnice pomiędzy wersjami
Zadania na wyszukiwanie binarne |
Nie podano opisu zmian |
||
Linia 186: | Linia 186: | ||
'''end'''; | '''end'''; | ||
Binpower:=z; | Binpower:=z; | ||
'''end'''; | |||
</div> | |||
</div> | |||
== Zadanie 8 (Najdłuższy podciąg niemalejący) == | |||
Dana jest tablica A typu array[1..N] of integer, N > 1. Należy obliczyć długość najdłuższego podciągu niemalejącego w A. | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
'''Wskazówka 1''' | |||
<div class="mw-collapsible-content" style="display:none">Kluczowe jest użycie dodatkowej tablicy B rozmiaru N, w której pod indeksem i przechowuje się minimalną wartość kończącą podciąg niemalejący o długości i w dotychczas przejrzanej części tablicy A, od 1 do k. Żeby uwzględnić A[k+1] należy w tablicy B odnależć miejsce na A[k+1] (najlepiej binarnie). | |||
</div> | |||
</div> | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
'''Rozwiązanie 1''' | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''function''' Podciag_niemalejący(N,A):integer; | |||
'''var''' : integer; | |||
B: array[1..N] of integer; | |||
'''begin''' | |||
ib:=1; | |||
B[ib]:=A[1]; | |||
ia:=2; | |||
'''while''' ia <= N '''do''' '''begin''' | |||
'''if''' A[ia] >= B[ib] '''then''' '''begin''' | |||
ib:=ib+1; | |||
B[ib]:=A[ia]; | |||
'''end''' | |||
'''else''' '''begin''' | |||
z:=ZnajdzPierwszyWiekszy(B,1,ib); | |||
B[z]:=A[ia]; | |||
'''if''' z = ib+1 '''then''' ib:=ib+1; | |||
'''end'''; | |||
ia:=ia+1; | |||
'''end'''; | |||
Podciag_niemalejący:=ib; | |||
'''end'''; | '''end'''; | ||
</div> | </div> | ||
</div> | </div> |
Wersja z 11:11, 11 lip 2006
Zadanie 1 (Pierwsze wystąpienie x)
Dana jest posortowana niemalejąco tablica A typu array[1..N] of integer i x typu integer. Znajdź miejsce pierwszego wystąpienia x (lub 0 gdy nie ma żadnego x)
Rozwiązanie 1
Zadanie 2 (Ostatnie wystąpienie x)
Dana jest posortowana niemalejąco tablica A typu array[1..N] of integer i x typu integer. Znajdź miejsce ostatniego wystąpienia x (lub 0 gdy nie ma żadnego x)
Rozwiązanie 1
Zadanie 3 (Policz liczbę wystapień x)
Dana jest posortowana niemalejąco tablica A typu array[1..N] of integer i x typu integer. Policz ile razy występuje w niej wartość x.
Wskazówka 1
Rozwiązanie 1
Zadanie 4 (Wartość równa indeksowi)
Dana jest posortowana rosnąco tablica A typu array[1..N] of integer. Sprawdź czy występuje w niej element o wartości równej swojemu indeksowi. Jeśli tak to zwróć ten indeks, jeśli nie to zwróć 0;
Wskazówka 1
Rozwiązanie 1
Zadanie 5 (Maksimum w ciągu bitonicznym)
Dana jest tablica A typu array[1..N] of integer, w której wartości ułożone są w ciąg bitoniczny (czyli istnieje 1 ≤ i ≤ N, takie że dla wszystkich k < i zachodzi A[k] < A[k+1] a dla wszystkich k ≥ i zachodzi A[k] > A[k+1]). Znajdź maksimum w tym ciągu.
Wskazówka 1
Rozwiązanie 1
Zadanie 6 (Pierwiastek z x)
Napisz program obliczający sufit z pierwiastka z x, dla xR, x > 0. (Oczywiście bez operacji pierwiastek; za to dostępna jest funkcja Sufit).
Wskazówka 1
Rozwiązanie 1
Wskazówka 2
Rozwiązanie 2
Zadanie 7 (Binpower)
Dla zadanego xR i nN policz x^n (oczywiscie bez exp i ln).
Rozwiązanie 1
Zadanie 8 (Najdłuższy podciąg niemalejący)
Dana jest tablica A typu array[1..N] of integer, N > 1. Należy obliczyć długość najdłuższego podciągu niemalejącego w A.
Wskazówka 1
Rozwiązanie 1