rewrite(output);
print('Наилучшийнабор ',bestP,0);
print(' Количество взятых:',BestP,1);
print(' Вес предмета:',W,1);
print('Стоимость предмета:',P,1);
close(output);
end;
begin
init;
Search(1, MaxW, 0);
done;
end.
Реализация Жадного алгоритма для задачи о рюкзаке:
program Greedy;
{$APPTYPE CONSOLE}
uses SysUtils;
var W, P:array [1..15000] of integer; {веса, цены}
Price:array [1..15000] of real; {относительная ценность}
Take:array [1..15000] of boolean; {использование предметов}
i, N, BestPrice, NowWeight, MaxWeight:integer;
{Количество предметов, Лучшая стоимость, Текущий вес, Макс. вес}
{Считаем что предметы уже отсортированы}
procedure Init;
begin
assign(input,'input.txt');
reset(input);
readln(N, MaxWeight);
for i:=1 to N do readln(W[i], P[i]);
close(input);
end;
procedure Solve;
begin
fillchar(Take, sizeof(Take), False);
i:=0;
while NowWeight+W[i+1]<MaxWeight do begin
inc(i);
BestPrice:= BestPrice + P[i];
NowWeight:= NowWeight + W[i];
Take[i]:= true;
end;
end;
procedure Done;
begin
assign(output,'output.txt');
rewrite(output);
i:=1;
writeln('Максимальная стоимость ',BestPrice);
writeln('Вес предметов максимальной стоимости ',NowWeight);
writeln('Используемые предметы');
writeln('Вес Цена');
while Take[i] do begin
writeln(W[i],' ',P[i]);
inc(i);
end;
close(output);
end;
begin
init;
solve;
done;
end.