問題:給出一個由0,1組成的二維數組,求由1組成的最大子矩陣
思路:第一種方式使用暴力法,在遍歷二維數組時,如果當前元素是1,則以當前位置爲起點,判斷先增的一行,一列是否全是1,如果是,則將當前邊長度加1,繼續看新增的行與列是全爲1,直到不滿足爲止。同時更新最大邊長度。
第二種方式是動態規劃法,用dp(i,j) 表示截止到(i,j)位置時的最大邊。動態轉移方程爲dp(i,j)=min(dp(i,j-1),dp(i-1,j), dp(i-1,j-1))+1
第三種方式時在第二種作的優化,使用滾動數組
具體代碼參考:
https://github.com/wuli2496/OJ/tree/master/LeetCode/Maximal%20Square