【題目描述】
在乙個01矩陣中,包含有很多的正方形子矩陣,現在要求出這個01矩陣中,最大的正方形子矩陣,使得這個正方形子矩陣中的某一條對角線上的值全是1,其餘的全是0。
【輸入描述】
第一行有兩個整數n和m(1 <= n,m <= 1000)。接下來的n行,每行有m個0或1的數字。每兩個數字之間用空格隔開。
【輸出描述】
輸出乙個整數,表示滿足條件的最大正方形子矩陣的邊長。
【樣例輸入】
4 60 1 0 1 0 0
0 0 1 0 1 0
1 1 0 0 0 1
0 1 1 0 1 0
【樣例輸出】
3
源**:#include
int m,n,ans(0),i[1001][1001]=,f1[1001][1001]=,f2[1001][1001]=,h1[1001][1001]=,h2[1001][1001]=;
intmain()
for (int a=1;a<=n;a++)
h1[1][a]+=h1[1][a-1
];
for (int a=n;a>0;a--)
h2[1][a]+=h2[1][a+1
];
for (int a=1;a<=n;a++)
f2[1][a]=f1[1][a]=i[1][a]; //
對第一行進行預處理。
for (int a=2;a<=m;a++)
for (int b=1;b<=n;b++) //
對後方進行處理。
for (int a=2;a<=m;a++) //
同理於上。
for (int b=n;b>0;b--) //
注意,此處應為倒序。
printf("%d
",ans);
return0;
}
wikioi 1259 最大正方形子矩陣
題目描述 description 在乙個01 矩陣中,包含有很多的正方形子矩陣,現在要求出這個 01矩陣中,最大的正方形子矩陣,使得這個正方形子矩陣中的某一條對角線上的值全是 1,其餘的全是0。輸入描述 input description 第一行有兩個整數n和m 1 n,m 1000 接下來的n行,...
最大正方形
題目鏈結 在乙個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個節...