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

2021-08-07 10:22:04 字數 458 閱讀 3138

最大正方形問題的轉移方程: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]就保證了對角線的最大長度。三者去min,然後+1,就是f[i][j]

這個思想可以引申到很多類似的求最大正方形的題目(一般的都是這個思想)

例如:洛谷1736創意吃魚法

例題做法:

定義乙個a[i][j]表示左邊連續的0的個數+1,c[i][j]表示右邊連續的個數+1,b[i][j]表示上邊連續的0的個數+1.

那麼對於乙個(i,j)它有兩種可能:

1.右下角座標。

2.左下角座標

這樣就很容易的dp了

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

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...

最大正方形

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