ALG$2

ALG$2



242


Rozdział 9, Zaawansowane techniki programowania

miejscach), chociaż w zoptymalizowanej wersji można by tę część wbudować w pętlę główną programu. Do obliczenia wartości P(i, j) potrzebna jest znajomość dwóch sąsiednich komórek: dolnej - P(i.j-l) oraz tej znajdującej się z lewej strony - P(i-I, jj. Uwaga ta prowadzi nas do spostrzeżenia, że naturalnym sposobem obliczania wartości P(i,j) będzie posuwanie się „zygzakiem” zaznaczonym na rysunku 9-3.

Rys. 9 - J.

„ Dwuwymiarowy " wiór rekurencyjny.


t|5||5|


P(i-ld)

t

1

P(i-j-l)


Gdy mamy te wszystkie informacje, realizacja programowa jest natychmiastowa:

const n-5;

void dynam(doubla P[n][nl) int i,j;

// inicjacja


for(i=l;i<n;i++)

P[i] [0]= 0; PIO] [i)= i;

for(j=l;j<n;j++)    II progresja

for(i=l;i<n;i++)

P[i][j]—(P[i—1][j]+P[i][j-l])/2.0;

Nietrudno jest zauważyć, że program powyższy jest dokładnym odbiciem wzoru rekurencyjnego - jedyny nasz wysiłek polega w zasadzie na tym. żeby znaleźć prawidłowy sposób wypełniania tablicy. Celowo podkreślam, że prawidłowy, bowiem w przypadku rekurencji dwu- i więcej wymiarowych (jeśli możemy sobie na takie określenie pozwolić...) możemy bardzo łatwo popełnić błąd polegający na próbie wykorzystania wartości z tablicy, które w danym etapie nie są jeszcze obliczone. Tego typu potknięcia są czasami bardzo trudne do wykrycia, więc warto przy tym szczególnie uważać.


Wyszukiwarka

Podobne podstrony:
ALG 6 226 Rozdział 9. Zaawansowane techniki programowaniaĆwicz. 9-1 Proszę wyprowadzić wzory tłumacz
ALG 8 228 Rozdział 9. Zaawansowane techniki programowania • funkcja KOMB polega na najzwyklejszym po
ALG#0 230 Rozdział 9. Zaawansowane techniki programowania Koszt wyliczenia jednego elementu macierzy
ALG#2 232 Rozdział 9. Zaawansowane techniki programowania I 9 pozornie całą żądaną pamięć, faktyczni
ALG#4 234 Rozdział 9. Zaawansowane techniki programowania problemu. Mimo iź wersje iteracyjne i reku
ALG#6 236 Rozdział 9. Zaawansowane techniki programowania części plecaka przeznaczonej na sery y ’ w
ALG$0 240 Rozdział 9. Zaawansowane techniki programowania „programu wanie dynamiczne " •
ALG 3 Rozdział 9Zaawansowane techniki programowania Rozdziały poprzednie (szczególnie 2 i 5) dostarc
ALG 4 224Rozdział 9. Zaawansowane techniki programowania Należy zdawać sobie bowiem sprawę z lego, i
ALG#8 238Rozdział 9. Zaawansowane techniki programowania if(i <n) X[i]=Z/W[i]; I void main() I do
ALG&8 268 Rozdziału. Algorytmy numeryczne11.1.Poszukiwanie miejsc zerowych funkcji Jednym z częstych
Księgarnia PWN: Joe Celko - SQL. Zaawansowane techniki programowaniaSpis treści O
12 SQL. Zaawansowane techniki programowania 28.    Drzewa i hierarchie w języku
14 SQL. Zaawansowane techniki programowania 33. Optymalizowanie języka
4 SQL. Zaawansowane techniki programowania 2.
6 SQL. Zaawansowane techniki programowania 7.4.    Numery
SQL. Zaawansowane techniki programowania 17.2.6.    Złączenia zewnętrzne i funkcje
10 SQL. Zaawansowane techniki programowania 22. Tabele
Rozdział 3 niż ma to miejsce w warunkach naturalnych. Również można liczyć się z innym niż zwykle

więcej podobnych podstron