讨论 / 弱弱地问一下,咱这程序该怎么弄对
槟榔 2011-10-13 05:55:00
点我顶贴 收藏 删除
var m,n,k,tmp,shijian,i,j,z:integer; guozi:longint;

huasheng:array [1..500,1..20] of integer;

a:array[0..1000,0..2] of integer;

procedure swap(var a:integer;var b:integer);

begin

tmp:=a;

a:=b;

b:=tmp;

end;

begin

readln(m,n,k);

for i:=1 to m do begin

for j:=1 to n do begin

read(huasheng[m,n]);

if huasheng[m,n]>0 then

begin

a[z,0]:=huasheng[m,n];

a[z,1]:=i;

a[z,2]:=j;

inc(z);

end;

end;

readln;

end;

for i:=1 to z-1 do

for j:=i+1 to z do

if a[i,0]<a[j,0] then begin swap(a[i,0],a[j,0]);

swap(a[i,1],a[j,1]);

swap(a[i,2],a[j,2]);end;

i:=1;

k:=k-1;a[0,2]:=a[1,2];

while shijian+a[i,1]+1<=k do

begin

guozi:=guozi+a[i,0];

shijian:=shijian+a[i,1]-a[i-1,1]+a[i,2]-a[i-1,2];

inc(i);

end;

if shijian+1>k then guozi:=guozi-a[i-1,0];

writeln(guozi);

end.

彻底败给猴子了,郁闷,~

#1 lani711@2015-12-02 20:32:10
回复 删除
var x,y,z,i,sum,j,x1,y1,x2,y2,shi:longint;

a:array[0..21,0..21] of longint;

begin

readln(x,y,z);

for i:=1 to x do

begin

for j:=1 to y do

read(a[i,j]);

readln;

end;

while true do

begin

for i:=1 to x do

for j:=1 to y do

if a[i,j]>a[x2,y2] then

begin

x2:=i;

y2:=j;

end;

if x1=0 then y1:=y2;

shi:=abs(x1-x2)+abs(y1-y2)+1+x2;

if (a[x2,y2]=0)or(shi>z) then break;

z:=z-abs(x1-x2)-abs(y1-y2)-1;

sum:=sum+a[x2,y2];

x1:=x2;y1:=y2;

a[x2,y2]:=0;

end;

writeln(sum);

end.

查看更多回复
提交回复