讨论 / 无语,评测机越来越卡pascal!
lijiaming12340 2011-10-29 02:20:00
点我顶贴 收藏 删除
program ss;

var sum,total,f,map:array[0..1000,0..1000] of longint;

i,j,k,m,n,s,t,ans,r:longint;

begin

readln(m,n);

for i:=1 to m do

for j:=1 to n do read(map[i,j]);

for i:=1 to m do

for j:=1 to n do sum[i,j]:=sum[i,j-1]+map[i,j];

for j:=1 to n do

for i:=1 to m do total[j,i]:=total[j,i-1]+map[i,j];

for i:=1 to m do

for j:=1 to n do

if map[i,j]=1 then

begin

f[i,j]:=1; r:=f[i-1,j-1];

if (sum[i,j-1]-sum[i,j-1-r]=r) and (total[j,i-1]-total[j,i-1-r]=r) then

f[i,j]:=f[i-1,j-1]+1;

if f[i,j]>ans then ans:=f[i,j];

end;

writeln(ans*ans);

end.

#1 lijiaming12340@2011-08-10 20:42:00
回复 删除
这么帅的程序。。。。

#2 grsiy@2011-08-12 21:58:00
回复 删除
同感~

哎,我想转CPP,可是我已经高二了。

#3 lijiaming12340@2011-08-13 02:34:00
回复 删除

#4 lijiaming12340@2011-08-13 02:34:00
回复 删除

#5 yeszy@2011-10-29 01:18:00
回复 删除
程序可以再短一点!

var

f:array[0..1000,0..1000] of longint;

i,j,n,m,x,ans:longint;

function min(a,b,c:longint):longint;

begin

if b<a then a:=b;

if c<a then a:=c;

exit(a);

end;

begin

readln(n,m);

ans:=0;

for i:=1 to n do

for j:=1 to m do

begin

read(x);

if x>0 then f[i,j]:=min(f[i-1,j],f[i,j-1],f[i-1,j-1])+1;

if f[i,j]>ans then ans:=f[i,j];

end;

writeln(ans*ans);

end.

#6 Hozi8273@2011-10-29 02:20:00
回复 删除
+1 昨天常数被卡了
查看更多回复
提交回复