leetcode動態規劃系列題解之二

2021-10-09 23:16:12 字數 779 閱讀 8747

暴力破解思路如下:

1、先確定左上角的頂點,從左到右遍歷行列數(行數假設為m,列數假設為n),此時確定乙個矩形的左上角的頂點。記錄該頂點為(i, j)。

2、以(i, j)為矩形的左上角頂點,從j+1遍歷到n,如果點為0,則繼續,如果為1,則進行下一步。假設為1的點為(i,k)。

3、以(i, j)為矩形的左上角頂點,從i+1遍歷到m-i,如果遍歷到的點為0,則繼續,如果為1,則進行下一步。假設為1的點為(p,j)。

4、以(i, j)為矩形的左上角頂點,從j+1遍歷到n-j,如果遍歷到的點為0,則繼續,如果為1,則矩形數量增加1。此時為1的點為(p,k)。

5、重複1-4,直至遍歷完成。

該種暴力演算法,用c++編寫可以ac,python提交超時。

該題解題思路如下:

1、同時遍歷兩行,固定其中一行(i行),另一行從i+1行開始遍歷,並初始化ct=0

2、從左往右開始進行列遍歷,如果兩行和當前列的所有交點都是1,此時計數ct+1

3、此時,ct即為交點均為1的數字情況,此時矩形數量為ct*(ct-1)/2。逐次累加就好。

python可以ac:

LeetCode 動態規劃題總結

64 最小路徑和 思路 dp 陣列為二維陣列,長度取決於提供陣列 陣列需初始化橫起始軸的值和豎起始軸的值,中間的值取決於上,左的值。關鍵在於了解本值與上,左值的關係 class solution int m grid.length int n grid 0 length int dp newint ...

leetcode刷題 動態規劃

動態規劃 英語 dynamic programming,簡稱 dp 是一種在數學 管理科學 電腦科學 經濟學和生物資訊學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於樸素解法。動態規劃背後的基...

Leetcode刷題 190713 動態規劃

輸入乙個陣列,陣列中每個元素代表乙個房子,我們作為robber可以對每個房子進行rob。但是規定不能同時又兩個相鄰的房子被robbed。陣列中每個元素的值代表房子的價值,需要我們輸出經過rob後最大的收益是多少。很明顯考察的是動態規劃,每檢查乙個房子都有兩種狀態即rob和no rob。對應的價值方程...