最大正方形問題(DP 字首和)

2021-08-22 19:47:42 字數 1117 閱讀 1263

1.

在乙個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 0

1 1 0 1

輸出樣例#1:

2

#include 

#define n 200

using

namespace

std;

int f[n][n],a[n],n,m,ans;

int min(int x,int y)

2.

colorful

description

philo的周圍一片黑暗。他踏出一步,腳下發出光亮。

該世界規則描述如下:這個世界建立在乙個平面上,該平面由n*mn∗m個玻璃板組成,初始每塊玻璃板都為熄滅狀態且都可以被點亮,每乙個玻璃板的邊長是1。每一塊玻璃板上都有乙個數值xx,xx代表了這塊玻璃板所發出光的亮度,每次點亮的方格必須是連續的,被點亮的方格可以被熄滅(你無須在意點亮和熄滅的細節,這對結果沒有影響)。philo可以從任意乙個位置出發。

離開的條件是找到面積最大的一塊正方形,該正方形內所有方格均被點亮,且該正方形上的每塊玻璃板的亮度都大於kk(亮度可以相同)。

你的任務就是輸出這個最大的面積。

0 < n,m\leq 2000,-1000\leq x,k \leq 10000

#include 

using

namespace

std;

const

int maxn = (int)2e3 + 5;

int dp[2][maxn], n, m, k, x, ans;

int main()

}cout

<< ans*ans << endl;

return

0;}

最大正方形問題(DP)套路

最大正方形問題的轉移方程 f i j min f i 1 j 1 f i 1 j f i j 1 1.那麼是什麼意思呢?f i j 表示以 i,j 為右下角的最大正方形的邊長。那麼f i j 1 就保證了往上最多能擴充套件的邊長。f i 1 j 就保證了往左邊能擴充套件的最大邊長。f i 1 j 1...

最大正方形

題目鏈結 在乙個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個節...