Wstęp do programowania / Ćwiczenia 3: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Daria (dyskusja | edycje)
Zadania na wyszukiwanie binarne
Daria (dyskusja | edycje)
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