JZOJ8 13最大正方形

2021-07-16 14:58:46 字數 1166 閱讀 5915

題目:

給乙個n*n的01矩陣, 求乙個面積最大的全為1的正方形子矩陣. 輸出它的面積.

依題意來說,一開始沒什麼好想法,打算直接暴力列舉,再加上了一些優化。可是後來超時70分,不得不想其他更好的方法了。最後選擇了乙個判斷和累加的方法,方程是total[i,j]:=min(total[i-1,j],total[i,j-1],total[i-1,j-1])+1;

最後用乙個max更新最大值即可。

附上**:

const

maxn=1000;

varmap,total:array[0..maxn,0..maxn] of longint;

n,m,max:longint;

s:ansistring;

procedure init;

vari,j,num:longint;

begin

readln(n);

for i:=1 to n do

begin

readln(s);

for j:=1 to n do

begin

val(s[j],num);

map[i,j]:=num;

end;

end;

end;

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

begin

min:=maxlongint;

if min>a then

min:=a;

if min>b then

min:=b;

if min>c then

min:=c;

end;

procedure main;

vari,j:longint;

begin

for i:=1 to n do

for j:=1 to n do

if map[i,j]=1 then

begin

total[i,j]:=min(total[i-1,j],total[i,j-1],total[i-1,j-1])+1;

if maxmax:=total[i,j];

end;

write(max*max);

end;

begin

init;

main;

end.

最大正方形

題目鏈結 在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入樣例 1 複製 4 4 0 1 1 1 1 1 1 0 0 1 1...

最大正方形

題解 if a i j 1 f i j min min f i j 1 f i 1 j f i 1 j 1 1 f i j 表示以節點i,j為右下角,可構成的最大正方形的邊長。只有a i j 1時,節點i,j才能作為正方形的右下角 對於乙個已經確定的f i j x,它表明包括節點i,j在內向上x個節...

最大正方形

一.題目描述 在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。示例 輸入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 4 二.思路 動態規劃 當前元素matrix i j 對應的最大正方形邊長跟matrix i 1 j m...