動態規劃 (一)

2021-09-13 21:56:12 字數 961 閱讀 5714

對於動態規劃的學習總共進行了兩節課,到現在為止還是一頭霧水,雖然看懂了老師上課講的例題,但是做v judge的時候還是都不太會,我主要認為我只知道了動態規劃的基本思想,就是將乙個大的問題,分成若干個小問題,但與貪心演算法不同的是,動態規劃中的每乙個小問題之間都相互影響,在每一步都取得最優解,且在不斷的影響找出每乙個階段的最優解,最終得出最優的答案。

動態規劃一般的解題步驟:

判斷該問題是否可以通過動態規劃的思想來解決,也就是所說的是否具備最優子結構。

把問題分成若干個小問題。

建立動態轉移方程。(通常使用迴圈加一維或二維陣列形式)

找出邊界條件。

將已知邊界初值帶入。(此時遞推方程已經具備)

遞推求解。

動態規劃的基本題型就目前我主要找到了以下幾種。

吃金幣、滑雪問題

這兩個例題都是非常簡單的題目,遞推方程十分簡單,通過定義乙個二維陣列來儲存在每一步的結果(金幣數、距離),通過max函式判斷走向,定義初始位置,遞推,得出最終位置,十分的好理解!(這是最友好的題目,嘿嘿嘿)

求最長上公升子串行

這個動態規劃的思想也非常明顯,已知第乙個數的和是1,然後其中的遞推關係就是通過判斷第二個數與第三個數之間的大小關係,看子列和數是否加1,這樣就已知了第二個數前的最長子列和,就這樣通過遞推關係,利用二重迴圈與陣列,最終我們就得到了每乙個數的最長子列和的陣列。最後得出結果即可。

揹包問題

也是最近做題遇到的,提前看了老師的課件也知道了其中的原理,但是使用的還是不是那麼順暢。通過判斷最終時候的揹包容量是否可以裝下一件物品位起始點,通過增加物品的質量與的得到的價值位遞推關係,最終得到結果,還需要聽老師上課講hhh

總體來說,到了現在,動態規劃還是迷迷糊糊的,看到別人都ac了那麼多題心裡也是非常著急,因為感覺自己還是不懂,因為搜尋答案的時候看解析也不懂**的意思,有的時候看懂了**自己運用的時候也是根本不會,希望在這後半周(4月3日)之前,能把動態規劃給學懂,能和貪心演算法一樣盡可能的把題都做完。

動態規劃 一

在現實生活中,有一類活動的過程,由於它的特殊性,可將過程分程若干個互相聯絡的階段,在它的每一階段都需要作出決策,從而使整個過程達到最好的活動效果。當然,各個階段決策的選取不是任意確定的,它依賴於當前面臨的狀態,又印象以後的發展,當各個階段決策確定後,就組成乙個決策序列,因而也就確定了整個過程的一條活...

動態規劃(一)

動態規劃的兩種常用形式 1 遞迴型 在函式中呼叫自身 優點 直觀,容易編寫 缺點 可能會因為遞迴層數太深導致爆棧,函式呼叫帶來額外時間開銷。無法使用滾動陣列節省空間。總體來說,比遞推型慢。2 遞推型 for迴圈 效率高,有可能使用滾動陣列節省空間。有的問題只能用遞迴解決,有的問題既可以用遞迴,也可以...

動態規劃(一)

題目描述 有n個任務,每個任務有起始時間點,結束時間點,獲得的報酬。同一時間不能同時做兩個任務,問最多可以獲得多少的報酬。解題思路 陣列 pre 儲存每個任務前乙個能做的任務 要做當前任務的情況下 opt 儲存前i個任務的最優解 關鍵思想 為了讓資料更有序,按照每個任務的結束時間以公升序進行排序。每...