動態規劃 最大子方陣問題

2021-08-19 22:10:02 字數 514 閱讀 7140

題目:

給定乙個 n*n 的矩陣 a,矩陣中的元素只取 0 或者 1。設計乙個動態規劃演算法,求解得到 a 中元素全是 1 的子方陣使其階數達到最大值。

分析:其實求解的時候當成m*n的矩陣做就行了。

設n階矩陣表示為a[1...n][1....n],b[i][j]表示前i行前j列所包含的1的個數。

最優子結構:c[i][j]表示前i行和前j列全為1的最大子方陣,那麼顯然c[i][j]等於max.這裡只要解決了最後一項,這個問題就解決了。這裡需要用到乙個公式:

因此,先求得c【i】【j-1】和c【i-1】【j】的最大值max,然後從b【i-max】【j-max】往回找就行了。

偽**:

利用自下向上的動態規劃演算法就可以了,其中b和c分別用陣列記錄。

先遍歷第一行,再遍歷第二行,然後....直到第n行,按照這個遍歷方式就行。具體**不寫了....懶..

最大子陣列問題 動態規劃

昨天偶然上csdn,看到這個問題,學習了一種複雜度為o n 的演算法,可以計算array的最大子陣列問題。思路就是從0 length,將array累加起來,同時用乙個變數max記錄最大值,如果sum max,就更新max,如果sum 0 就令sum 0 為什麼是這樣呢,sum 0的話,前面的就可以直...

最大子串行和問題(動態規劃)

1.問題詳解 輸入一組整數,求出這組數字子串行和中最大值。也就是只要求出最大子串行的和。例如 序列 2 11 4 13 5 2,則最大子串行和為20。序列 6 2 4 7 5 3 2 1 6 9 10 2,則最大子串行和為16。2.解決辦法 這一類題目我們通常採用動態規劃來解決,即可以通過一次遍歷完...

動態規劃 最大子陣列和問題

有整型陣列int a 求這個陣列的最大子陣列和 來手寫一下求取最大子陣列和序列的過程,用m i 表示第i個數所對應的最大子陣列和 s 0 1 m 0 1 s 1 max 1 m 1 max 1 s 2 max 3 m 2 max 3 s 3 max 13 m 3 max 13 s 4 max 9 m...