![Ольга Ковалева](https://m.sprashivalka.com/orig/b8e/97d/b1f/f4a08.jpg?auto_optimize=high&width=128&height=128&aspect_ratio=1%3A1)
ЗАДАЧА О РАНЦЕ (нужно дополнить код)
У меня не выходит дополнить код. Код выполняет функцию:
Задаешь грузоподъемность рюкзака, загружаешь предметы (n-ое количество) определенного веса, и программа рассчитывает, какими предметами нужно укомплектовать рюкзак так, чтобы как можно больше и как можно укомплектованнее поместить предметы. Например: Рюкзак-Вес= 20, загружаем: _____1й предмет=5,__2й предмет= 7,__3й предмет= 3,__4й= 4,__5й=10,__6й=1. Вывод, в рюкзак нужно положить предметы весом: 5, 7, 3, 4, 1
МНЕ НУЖНО, чтобы в программе еще учитывалась стоимость каждого предмета, чтобы как можно максимальнее была общая стоимость предметов.
Вот код. :
uses crt;
var
a,b:array[1..100] of integer;
n:byte;
sum:integer;
f:boolean;
i,j,k,h,s,m,z:integer;
begin
{Vvodim vse podryat}
clrscr;
Writeln('Vvedite kolichestvo Predmetov <=100');
Readln(n);
for i:=1 to n do
begin
writeln(i,' :Predmet');
readln(a);
end;
writeln('Vvedite Ves');
readln(sum);
For I := N Downto 1 Do
Begin
B[1] := I;
H := 1;
K := Sum - A;
F := False;
Repeat
For J := B[H]-1 Downto 1 Do
Begin
If A[J] <= K Then
Begin
Inc(H);
B[H] := J;
Dec(K, A[J]);
End; { If A[J] <= K }
If K = 0 Then
Begin
For M := 1 to H Do Write(A[B[M]], ' ');
Inc(K, A[B[H]]);
Dec(H);
WriteLn;
End;
End;
F := True;
For M := H Downto 2 Do
Begin
If B[M] <> H-M+1 Then
Begin
F := False;
Dec(B[M]);
H := M;
K := Sum;
For Z := 1 to H Do
Dec(K, A[B[Z]]);
Break;
End;
End;
Until F;
End;
repeat until keypressed;
end.
Конечно код нужно написать в PASCAL))
http://pastebin.com/wpRA8Ywm