切换到宽版
  • 7488阅读
  • 2回复

求救!关于开心的金明的程序(动态规划) [复制链接]

上一主题 下一主题
离线zimu
 
只看楼主 倒序阅读 0 发表于: 2007-11-01
下面是我编写的2006年开心的金明的程序,请大家帮我看看程序有什么问题,测试数据有些对,有些错,我不知道那里出了问题,在此先谢谢大家了!
program jm;
var i,j,m,n:integer;
    k:array[0..25,0..3000] of integer;
    v:array[1..25]of integer;
    w:array[1..25]of integer;
begin
assign(input,'happy.in');
assign(output,'happy.out');
reset(input);
rewrite(output);
read(n,m);
for i:=0 to m do
k[i,0]:=0;
for i:=0 to n do
k[0,i]:=0;
for i:=1 to m do
read(v,w);
for i:=1 to m do
begin
  for j:=1 to v-1 do
      k[i,j]:=k[i-1,j];
    for j:=v to n do
    if  (k[i-1,j-v]+v*w>k[i-1,j])
              then  k[i,j]:=  k[i-1,j-v]+v*w
              else k[i,j]:= k[i-1,j];
    end;
  writeln(k[m,n]);
close(input);
close(output);
end.
       
离线ddddddd
只看该作者 1 发表于: 2007-11-04
var
  n,m,i,j:integer;
  a:array[0..25,0..30000]of longint;
  w,v:array[1..25]of integer;
function da(x,y:longint):longint;
begin
  if x<y then da:=y
        else da:=x
end;
begin
  readln(n,m);
  for i:=0 to 25 do
  for j:=0 to 30000 do a[i,j]:=0;
  for i:=1 to m do readln(v,w);
  for i:=1 to m do
  for j:=1 to n do
    if j<v then a[i,j]:=a[i-1,j]
              else a[i,j]:=da(a[i-1,j-v]+v*w,a[i-1,j]);
  writeln(a[m,n])
end.
离线zhitiancheng
只看该作者 2 发表于: 2008-02-17
【算法分析】
    本题是“01背包问题”的变形,如果我们把总钱数看作背包可容重量,把希望购买物品的个数看作要放进背包的物品的数量,把物品的价格看作物品的重量,把物品的价格与物品的重要度的乘积看作物品的价值,本题就完全变成了“01背包问题”。我们再根据下图可得出程序。
i:前i个物品 j:背包剩余可容重量 w:第i个物品的重量 r:第i个物品的价值
i=0                            f[i,j]=0
i>0                            f[i,j]=max{f[i-1,j],f[i-1,j-w]+r}
【程序清单】
program happy(input,output);
var
  i,j,m,n:longint;
  w,r:array[1..25] of longint;
  a:array[0..1,-10000..100000] of longint;
begin
  assign(input,'happy.in');reset(input);
  assign(output,'happy.out');rewrite(output);
  read(n,m);
  for i:=1 to m do
  begin
    read(w,r);
    r:=r*w;
  end;
  for i:=1 to m do
  begin
    a[1]:=a[0];
    for j:=w to n do
      if a[0,j-w]+r>a[1,j] then a[1,j]:=a[0,j-w]+r;
    a[0]:=a[1];
  end;
  writeln(a[1,n]);
  close(input);close(output);
end.
【考察知识点】
    “动态规划-01背包问题”的应用。
快速回复
限100 字节
 
上一个 下一个