program batoh2;
{ Co udela tento program? Jak a proc funguje?
Odpovezte na tyto otazky a okomentujte kód. }
var celkem,pPredmetu,i:integer;
predmety:array[1..1000] of integer;
pouzite:array[1..1000] of boolean;
procedure vypis(cPredmetu:integer);
var i:integer;
begin
for i:=pPredmetu downto cPredmetu do
if (pouzite[i]) then
write(predmety[i],' ');
writeln;
end;
function rekurze(cPredmetu, zbyva : integer):integer;
var mezisoucet:integer;
begin
if (zbyva = 0) then
begin
vypis(cPredmetu+1);
rekurze:=1;
end
else if (zbyva < 0) or (cPredmetu <= 0) then rekurze:=0
else
begin
pouzite[cPredmetu]:=false;
mezisoucet := rekurze(cPredmetu-1, zbyva);
pouzite[cPredmetu]:=true;
rekurze := mezisoucet + rekurze(cPredmetu-1, zbyva - predmety[cPredmetu]);
end;
end;
begin
read(celkem,pPredmetu);
for i:=1 to pPredmetu do
read(predmety[i]);
writeln('celkem',rekurze(pPredmetu,celkem));
end.
Kdo byste našel v nějakém z těchto programů chybu, dejte mi to vědět - můžete tak získat bonusové body (1 chyba ≈ 5 bodů). ;)