考虑下面的方格,它表示农夫约翰的农场,‘.'表示没有树的方格,‘#'表示有树的方格
8 3
2 2
2 6
OUTPUT FORMAT
输出文件只由一行组成,约翰的牛棚的最大边长。5
这道题其实很简单,就是一个DP,判断当前点的左上方,右上方,中上方,三个矩形所比较出的最小值,取这个值+1就等于当前的值了,至于为什么,在草稿纸上模拟一下即可。
var
n,t,x,y,max,i,j:Longint;
a:array[1..1000,1..1000] of boolean;
f:array[0..1000,0..1000] of Longint;
function min(x,y:Longint):Longint;
begin
if x<y then exit(x); exit(y);
end;
begin
readln(n,t);
fillchar(a,sizeof(a),true);
for i:=1 to t do
begin
readln(x,y);
a[x,y]:=false;
end;
for i:=1 to n do
for j:=1 to n do
if a[i,j] then
begin
f[i,j]:=min(min(f[i,j-1],f[i-1,j]),f[i-1,j-1])+1;
if f[i,j]>max then max:=f[i,j];
end;
writeln(max);
end.