Nešto sam probao,ali ne ide.Inače ovo sam radio na principu jednog pseudokoda,ali izgleda da ga nisam dobro shvatio.(ili čak to nije možda ni tačno).
E sad,ovaj kod ne da je spor,nego nekad ni neće najjednostavniji primjer da uradi.
program knepsek;
type
ObicniNiz=array[1..100] of integer;
var
v,z:ObicniNiz;
M:ObicniNiz;
n,i,j,k,W:integer;
max:integer;
begin
readln(W,n); //W je zapremina ranca,n je broj predmeta
//unosenje vrijednosti
for i:=1 to n do
begin
readln(z[i],v[i]); //z je zapremina i-tog predmeta,v je vrijednost
end;
//glavni dio
for j:=1 to W do
begin
M[j]:=0;
k:=0;
for i:=1 to n do
begin
for j:=w downto 1 do
begin
if M[j-z[i]]+v[i]>M[j] then
M[j]:=M[j-z[i]]+v[i] ;
if M[j]>max then
max:=M[j]; //cuvam max
end;
end;
end;
writeln(max);
readln;
end.