讨论 / 求助,新手求助(WA:30)....
自由之翼 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
回复 删除
这道题要用动态规划,贪心法对于某些数据并不是最优的..

推荐你看看背包问题九讲。

http://wenku.baidu.com/view/8b3c0d778e9951e79b892755.html

查看更多回复
提交回复