刷題 動態規劃

2021-09-26 06:10:19 字數 2284 閱讀 7005

動態規劃法:

* 動態規劃求解問題的四個特徵:

①求乙個問題的最優解;

②整體的問題的最優解是依賴於各個子問題的最優解;

③小問題之間還有相互重疊的更小的子問題;

④從上往下分析問題,從下往上求解問題;

題目: 給你一根長度為n繩子,請把繩子剪成m段(m、n都是整數,n>1並且m>1)。每段的繩子的長度記為k[0]、k[1]、……、k[m]。k[0] * k[1]*…*k[m]可能的最大乘積是多少?例如當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到最大的乘積18。

給定乙個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。

1.動態規劃

解題思路:

當n小於等於3時,n為1乘積為0,n為2 (1乘以1)乘積為1,n為3(1乘以2)乘積為2。

當n大於3時,初始化動態規劃的初始條件,n為1 2 3 時不切割的值最大,故dp[0] dp[1] dp[2] dp[3]做為初始條件。

迴圈,從下往上求解問題,從n=4開始,每次將n拆分為兩部分的乘積,從1到n/2即可,之後的情況均已經計算過,當值大於max時,更新max,內迴圈結束 dp[n]的值就等於max。

最終返回dp[n]即為最終的結果。

class solution 

dp[len]

=max;

}return dp[n];}

};

2.貪心演算法解題思路:

n小於等於3時,情況類似。

當n>=5時,盡可能多的拆分為3,當最後剩下長度為1時,退一步得4,拆分為2乘以2。 當最後剩下為2時,乘以最後的2即可。

證明:(3(n-3)>=2(n-2)>n) 故應該盡可能多的拆分為3

當n=4時,拆分為3和1,退一步,拆分為2乘以2.

class solution 

};

題目描述:

輸入乙個整數陣列,陣列裡有正數也有負數。陣列中的乙個或多個連續整數組成乙個子陣列。求所有子陣列的和的最大值,時間複雜度o(n)。

解題思路:

每乙個狀態的最優解都依賴於子問題的解,採用動態規劃求解。

動態規劃公式如下:當該元素之前的最大和小於0,包含該元素的最大和為該元素值,否則,加上之前的最大和。

需要乙個最大值中間量記錄每次的最大值,防止出現最後幾個元素均為負值但和大於0的情況。

解法一:回溯法(記憶化儲存)時間複雜度o(n^2) 空間複雜度o(n)

若index到達字串結尾,表示前面位置的字串可以拆分為在字典中的字串組合,返回true。

若下次搜尋到index位置為-1,直接返回false(記憶化儲存,剪枝,降低時間複雜度)。

class

solution

flag[index]=-

1;//若index位置開始不能全部拆分為字典中的元素,返回false並置當前位置為-1

return

false;}

bool

wordbreak

(string s, vector

& worddict)

};

解法二:動態規劃 時間複雜度o(n^2) 空間複雜度o(n)建立dp陣列,dp[i]表示從0到第i個位置的所有單詞均可以拆分為字典中存在的元素。初始化dp[0]為1,因為空字串包含在字典中。

遍歷字串,當j到i的字串存在在字典中且dp[j]=1,表示i之前的字串均可拆分,故dp[i]=1,break。

最終返回dp[n]即可知道0到n位置的字串,也就是整個字串是否可拆分為字典中的元素組合。

class

solution}}

return dp[n]==1

?true

:false;}

};

動態規劃刷題總結

資料結構與演算法 41 動態規劃理論 最優子結構 無後效性和重複子問題 zj csdn部落格 乙個模型 多階段決策最優解模型,重點在於多階段,每個階段都對應著不同的狀態 三個特徵 最優子結構,無後效性,重複子問題。主要抓住最優子結構這一特徵,理解為後面的階段狀態可以由前面的階段狀態推導而來。狀態定義...

leetcode刷題 動態規劃

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

Leetcode刷題 190713 動態規劃

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