思路:動態規劃問題
1.設二維陣列dp[m][n],其中dp[i][j]表示以座標(i,j)為正方形右下角元素時的最大正方形的邊長。
2.當前點的最大正方形邊長為上,左,左上三個點最大正方形邊長的最小值+1,也就是從這個點往這三個方向進行延伸,延伸的長度為上,左,左上三個點最大正方形邊長的最小值+1。
即核心遞推式為:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1;
3.得到動態規劃方程:
如果 matrix[i][j] == 1
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1;
否則dp[i][j] = 0;
並用乙個變數max_width記錄下遍歷過程中的最大正方形邊長,最終返回max_width*max_width為最大正方形面積。
max_width = max(dp[i][j],max_width);
時間複雜度:o(mn)
空間複雜度:o(mn)
m,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個節...
最大正方形
一.題目描述 在乙個由 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...