一道Free Pascal题目

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:33:11
小明有一个最多只能装10斤重物品的网袋,现有白菜5斤,猪肉2斤,鱼3.5斤,白糖1斤,酱油连瓶重1.7斤,土豆5.1斤,请设计一个程序,使小明的网袋总重量为最大。

dp就行了,贪心可能出不来正确的答案,还有小数。。。
program dp;
var i,j,k:integer;
a:array[1..6] of real;
f:array[0..6,0..100] of integer;
function max(a,b:integer):integer;
begin
if a>b then max:=a else max:=b;
end;
begin
for i:=1 to 6 do
begin
read(a[i]);
a[i]:=a[i]*10;
end;
for i:=1 to 6 do
for j:=1 to 100 do
if j>=a[i] then f[i,j]:=max(f[i-1,j],f[i-1,j-trunc(a[i])]+trunc(a[i]));
writeln(f[6,100] div 10);
end.

典型的背包问题。。。