讨论 / 23题求解!!!!!!!!
junxu123 2010-08-31 04:37:00
点我顶贴 收藏 删除
看了大牛的思路 满脑子疑惑 但是还是照思路写了

var

m,n,t,i,j,k,sj,s:longint;

a:array[1..10000,1..3] of longint;

procedure swap(var a,b:longint);

var t:integer;

begin

t:=a;a:=b;b:=t;

end;

procedure qsort(l,r: longint);

var

i,j,x,y: longint;

begin

i:=l;

j:=r;

x:=a[(l+r) div 2,3];

repeat

while a[i,3]>x do

inc(i);

while x>a[j,3] do

dec(j);

if not(i>j) then

begin

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

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

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

inc(i);

dec(j);

end;

until i>j;

if l<j then

qsort(l,j);

if i<r then

qsort(i,r);

end;

begin

k:=0;

readln(m,n,t);

for i:=1 to m do

for j:=1 to n do

begin

read(s);

if s>0 then begin

inc(k);

a[k,1]:=i;

a[k,2]:=j;

a[k,3]:=s;

end;

end;

qsort(1,k);

sj:=a[1,1]+1;

s:=a[1,3];

i:=1;

while sj+a[i,1]<=t do

begin

inc(i);

sj:=sj+abs(a[i,1]-a[i-1,1])+abs(a[i,2]-a[i-1,2])+1;

s:=s+a[i,3];

if sj+a[i,1]>=t then break;

end;

if sj+a[i,1]>t then writeln(s-a[i,3])

else writeln(s);

end.

这个是照思路写的..AC了

但是很不解 为什么要从大的花生的点开始

我自己模拟了一个测试

4 4 9

0 0 49 49

0 0 0 0

0 0 0 0

0 50 0 0

这个答案应该是98吧??运行程序确实50

这个为什么能AC??

查看更多回复
提交回复