回 帖 发 新 帖 刷新版面

主题:[讨论]关于NOIP2006第2题~~~

请问我用递归做此题,但结果总少一点,为什么???
//PS:我的程序//
program happyjinming;
var cost,zy:array [1..30000] of longint;(cost代表钱数,zy代表重要度)
    m,n,ii,big,s:longint;
procedure digit(x,y:longint);
var i:longint;
begin
  for i:=y to n do
    if (x-cost[i]>=0) then
    begin
      s:=s+cost[i]*zy[i];
      digit(x-cost[i],i+1);
      s:=s-cost[i]*zy[i];
    end
                      else if big<s then big:=s;
end;
begin
  s:=0;
  readln(m,n);
  big:=0;
  for ii:=1 to n do
    readln(cost[ii],zy[ii]);
  digit(m,1);
  writeln(big);
end.

回复列表 (共14个回复)

11 楼

我考试时是用的贪心,结果一个点都没过!!!
去年的测试数据真是刁钻啊!

12 楼

请问是说我的算法(即递归算法)还是背包问题的算法???

13 楼


诶,2006年我还在普及,今年10月我就要到提高去了~~~~


55555~~~~~怀念在普及的日子!!!!!

去年这道题我用的是背包![em9]

14 楼

xx

我来回复

您尚未登录,请登录后再回复。点此登录或注册