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 fórum nebo emailem. Díky!