自由之翼 2013-10-30 18:24:00
点我顶贴
收藏
删除
var N,m:integer;
v:array[1..25]of integer;
p:array[1..25]of integer;
s:array[1..25]of longint;
t:longint;i,j:integer;vs:longint;
sum:longint;
begin
sum:=0;
readln(N,m);
for i:=1to m do
begin
readln(v[i],p[i]);
s[i]:=v[i]*p[i];
end;
for i:=1to m-1 do
for j:=i+1 to m do
if s[i]<s[j] then
begin
t:=s[i];
s[i]:=s[j];
s[j]:=t;
t:=v[i];
v[i]:=v[j];
v[j]:=t;
end;
for i:=1 to m do
begin
if vs+v[i]<=N then
begin
sum:=sum+s[i];
vs:=vs+v[i];
end;
end;
writeln(sum);
end.
#1 孤独小侠@2013-11-03 05:50:02
32040
回复
删除
这道题要用动态规划,贪心法对于某些数据并不是最优的..
推荐你看看背包问题九讲。
http://wenku.baidu.com/view/8b3c0d778e9951e79b892755.html