讨论 / 求教大牛,到底哪错了
zxc123 2009-09-24 02:12:00
点我顶贴 收藏 删除
我的思路就是多维化成一维,不知程序哪错了

program tt;

var

mm:array[0..5000000] of longint;

x,cost:array[0..5] of longint;

a,z:array[1..200] of longint;

b:array[1..200,1..5] of longint;

i,j,k,l,m,n,xx:longint;

procedure init;

begin

readln(n,m);

cost[0]:=1;

for i:=1 to m do

begin

read(x[i]);

cost[i]:=cost[i-1]*x[i];

end;

readln;

for i:=1 to n do

begin

read(a[i]);

for j:=1 to m do

begin

read(b[i,j]);

z[i]:=z[i]+(b[i,j]-1)*cost[j-1];

end;

readln;

end;

end;

procedure tt(s,yy:integer);

var

i:integer;

begin

for i:=x[yy] downto b[s,yy] do

begin

xx:=xx+(i-1)*cost[yy-1];

if yy=1 then

begin

if mm[xx+1]<mm[xx-z[s]]+a[s] then mm[xx+1]:=mm[xx-z[s]]+a[s];

end else tt(s,yy-1);

xx:=xx-(i-1)*cost[yy-1];

end;

end;

begin

init;

for i:=1 to n do tt(i,m);

writeln(mm[cost[m]]);

end.

#1 zxc123@2009-09-23 05:11:00
回复 删除
难道没有大牛有好心情么,谁帮忙看看啊
#2 小小小学生@2009-09-24 02:12:00
回复 删除
我AC了的垃圾程序

你看下:

program li;

var n,m,ans:longint;

i,j1,j2,j3,j4,j5,j,k:longint;

v:array[0..5] of longint;

a:array[0..201,0..5] of longint;

f:array[0..5000000] of longint;

function max(a,b:longint):longint;

begin

if a>b then max:=a else max:=b;

end;

begin

readln(n,m);

for i:=1 to m do read(v[i]);

for i:=1 to n do

begin

for j:=0 to m do read(a[i,j]);

readln;

end;

ans:=-maxlongint;

for i:=1 to n do

for j1:=v[1] downto a[i,1] do

for j2:=v[2] downto a[i,2] do

for j3:=v[3] downto a[i,3] do

for j4:=v[4] downto a[i,4] do

for j5:=v[5] downto a[i,5] do

begin

j:=(((j1*(v[2]+1)+j2)*(v[3]+1)+j3)*(v[4]+1)+j4)*(v[5]+1)+j5;

k:=((((j1-a[i,1])*(v[2]+1)+(j2-a[i,2]))*(v[3]+1)+(j3-a[i,3]))*(v[4]+1)+(j4-a[i,4]))*(v[5]+1)+j5-a[i,5];

f[j]:=max(f[k]+a[i,0],f[j]);

ans:=max(f[j],ans);

end;

writeln(ans);

end.

查看更多回复
提交回复