Nalezené chyby v knize Programátorské kuchařky
- Str. 70–71: program na výpočet nejdelší společné podposloupnosti
počítá nejdelší společnou podposloupnost končící na poslední prvek posloupnosti
A, navíc vrací špatný výsledek, pokud posloupnosti
A, B nemají společný prvek.
Správná verze je tato:
program Podposloupnost; var A, B, C: array[0..MaxN - 1] of Integer; LA, LB, LC: Integer; { Délky posloupností } D: array[0..MaxN, 1..MaxN] of Integer; I, J, L, MaxL, T: Integer; begin ... if LA > LB then begin { A bude kratší z obou } C := A; A := B; B := C; T := LA; LA := LB; LB := T; end; for I := 1 to LA do D[0, I] := LB; L := 0; MaxL := 0; for I := 1 to LA do begin for J := 1 to LA do D[I, J] := D[I - 1, J]; L := 0; for J := 0 to LB - 1 do if B[J] = A[I - 1] then begin while (L = 0) or (D[I - 1, L] < J) do L := L + 1; if D[I, L] >= J then D[I, L] := J; end; if L > MaxL then MaxL := L; end; LC := MaxL; J := LA; for I := LC downto 1 do begin while D[J - 1, I] = D[J, I] do J := J - 1; C[I - 1] := A[J - 1]; J := J - 1; end; ... end.
Pokud byste našli jakoukoliv další chybu (faktickou, pravopisnou atd.), nějaká část kuchařek vám přijde nesrozumitelná nebo máte návrh na jejich vylepšení, napište nám prosím na Discord nebo emailem. Díky!