国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一文讀懂動(dòng)態(tài)規(guī)劃問題

這篇具有很好參考價(jià)值的文章主要介紹了一文讀懂動(dòng)態(tài)規(guī)劃問題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

動(dòng)態(tài)規(guī)劃五部曲

動(dòng)態(tài)規(guī)劃,英文: Dynamic Programming, 簡(jiǎn)稱DP,如果某一個(gè)問題由很多重疊子問題,使用動(dòng)態(tài)規(guī)劃是最有效的。

所謂動(dòng)態(tài)規(guī)劃就是,在解決一個(gè)問題的過程中,將其分解為很多個(gè)小的部分,環(huán)環(huán)相扣。最典型的一個(gè)例子,我們?nèi)腴T編程時(shí)都學(xué)習(xí)過的斐波那契數(shù),每個(gè)數(shù)都是由前面的兩個(gè)數(shù)字推導(dǎo)出來的,也就是所謂的前一個(gè)狀態(tài)。

動(dòng)態(tài)規(guī)劃解題步驟

在我剛接觸動(dòng)規(guī)題目的時(shí)候,比如說做01背包的問題,去把狀態(tài)轉(zhuǎn)移公式背下來,然后照著這樣去改改開始寫代碼,把題目做完之后可能都不知道后一個(gè)狀態(tài)是如何推導(dǎo)而來的。

對(duì)于動(dòng)態(tài)規(guī)劃的問題,如果我們?cè)诜治鲱}目的時(shí)候能夠看出來可以轉(zhuǎn)換為動(dòng)態(tài)規(guī)劃來求解的話一般就比較好解決了。對(duì)于此類問題我一般拆解為五步。簡(jiǎn)稱動(dòng)歸五部曲

1.確定dp數(shù)組 以及其下標(biāo)的含義

2.確定遞推公式

3.dp數(shù)組如何初始化

4.確定遍歷順序

5.舉例推導(dǎo)dp數(shù)組

在這里我給個(gè)建議,就是在做題的時(shí)候在我們把dp數(shù)組推導(dǎo)出來后,去將它打印出來,看看究竟是不是按照自己的思路推導(dǎo)的!就算出現(xiàn)問題的時(shí)候我們也可以很直觀的看出來問題出在哪里,當(dāng)出現(xiàn)錯(cuò)誤的時(shí)候不要去胡亂的修改,先去分析以上的五步到底是哪里出了問題,有沒有真正理解dp數(shù)組的含義。

實(shí)戰(zhàn)演練

  1. 爬樓梯

一文讀懂動(dòng)態(tài)規(guī)劃問題,題解,動(dòng)態(tài)規(guī)劃,算法

如果沒有接觸過的話乍一看會(huì)感覺沒有思路,既然每次只能爬1或2層臺(tái)階,爬到第一層樓有一種方法,爬到第二層樓就是有兩種方法(直接爬兩層或者分為兩次一次爬一層),如何與動(dòng)態(tài)規(guī)劃結(jié)合起來呢,既然一次只能爬1或2層,那么不管是哪層樓,是不是只能由它的前一層或前兩層爬過來。

分析到這里我們按照前面講的動(dòng)歸五部曲:

1.確定dp數(shù)組以及下標(biāo)的含義

dp[i]就是爬到第i層樓有dp[i]種方法

2.確定遞推公式

不管哪一層樓都只能由它的前一層或前兩層爬過來,那么很簡(jiǎn)單

dp[i] = dp[i-1]+dp[i-2].

在推導(dǎo)的時(shí)候,要時(shí)刻想著dp[i]的含義。

3.dp數(shù)組如何初始化

dp[i]的含義是爬到第i層樓,有dp[i]種方法。那么本題中我們應(yīng)該從哪里開始遍歷呢,dp[0]有沒有含義呢,很明顯的就可以得到dp[1] = 1;dp[2] = 2 那么根據(jù)狀態(tài)轉(zhuǎn)移方程,是不是要將dp[0]初始化為1呢,這顯然是不正確的。因?yàn)槲覀兂跏紶顟B(tài)就是在第0層,也就是說dp[0]是沒有意義的,所以在這道題中 應(yīng)該初始化dp[1] = 1,dp[2] = 2.

4.遍歷順序

我們已經(jīng)將dp[1]和dp[2]初始化后,那么就是從第三層樓開始遍歷,一直推導(dǎo)到我們所需要求的樓層。

5.舉例推導(dǎo)dp數(shù)組

前面我們已經(jīng)說了,在推導(dǎo)過程中將每一個(gè)狀態(tài)都打印出來,我們可以舉例推導(dǎo)dp[3] = 3,都是符合的,所以本題到這里按照五部曲已經(jīng)解決。當(dāng)我們熟悉了這個(gè)過程之后是非常快的。

class Solution {
public:
 ? ?int climbStairs(int n) {
 ? ? ? ?//1. 確定dp數(shù)組的含義 dp[i] 表示爬到第i層樓一共有多少種方法
 ? ? ? ?//2. 確定遞推公式 dp[i] = dp[i-1] + dp[i-2];
 ? ? ? ?//3. dp數(shù)組初始化  dp[1] = 1, dp[2] = 2
 ? ? ? ?//4. 遍歷順序 從第3層樓開始遍歷
 ? ? ? ?//5. 舉例推導(dǎo)驗(yàn)證
 ? ? ? ?vector<int> dp(n+1);
 ? ? ? ?if(n<=1) return n;
 ? ? ? ?dp[1] = 1,dp[2] = 2;
 ? ? ? ?for(int i= 3;i<=n;i++ )
 ? ? ?  {
 ? ? ? ? ? ?dp[i] = dp[i-1]+dp[i-2];
 ? ? ?  } ?
 ? ? ? ?return dp[n];
 ? ? ? ?
?
 ?  }
};

以上就是對(duì)于動(dòng)態(tài)規(guī)劃問題的基本階梯思路 后續(xù)還會(huì)在本帖中更新相關(guān)動(dòng)態(tài)規(guī)劃問題的題解。文章來源地址http://www.zghlxwxcb.cn/news/detail-857871.html

到了這里,關(guān)于一文讀懂動(dòng)態(tài)規(guī)劃問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【算法】一文帶你快速入門動(dòng)態(tài)規(guī)劃算法以及動(dòng)規(guī)中的空間優(yōu)化

    【算法】一文帶你快速入門動(dòng)態(tài)規(guī)劃算法以及動(dòng)規(guī)中的空間優(yōu)化

    君兮_的個(gè)人主頁 即使走的再遠(yuǎn),也勿忘啟程時(shí)的初心 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,如果給算法的難度和復(fù)雜度排一個(gè)排名,那么動(dòng)態(tài)規(guī)劃算法一定名列前茅。在最開始沒有什么整體的方法的時(shí)候,我也曾經(jīng)被動(dòng)態(tài)規(guī)劃折磨過很長(zhǎng)時(shí)間,通過我一段時(shí)間的刷題

    2024年02月05日
    瀏覽(30)
  • 【算法-動(dòng)態(tài)規(guī)劃】0-1 背包問題

    【算法-動(dòng)態(tài)規(guī)劃】0-1 背包問題

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月08日
    瀏覽(27)
  • 【算法專題】動(dòng)態(tài)規(guī)劃之路徑問題

    【算法專題】動(dòng)態(tài)規(guī)劃之路徑問題

    題目鏈接 - Leetcode -62.不同路徑 Leetcode -62.不同路徑 題目:一個(gè)機(jī)器人位于一個(gè) m x n 網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為 “Start” )。 機(jī)器人每次只能向下或者向右移動(dòng)一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish” )。 問總共有多少條不同的路徑? 示

    2024年01月24日
    瀏覽(25)
  • 【算法 - 動(dòng)態(tài)規(guī)劃】找零錢問題Ⅲ

    【算法 - 動(dòng)態(tài)規(guī)劃】找零錢問題Ⅲ

    在前面的動(dòng)態(tài)規(guī)劃系列文章中,關(guān)于如何對(duì)遞歸進(jìn)行分析的四種基本模型都介紹完了,再來回顧一下: 從左到右模型 : arr[index ...] 從 index 之前的不用考慮, 只考慮后面的該如何選擇 。 范圍嘗試模型 :思考 [L ,R] 兩端,即 開頭和結(jié)尾 處分別該如何取舍。 樣本對(duì)應(yīng)模型 :

    2024年04月09日
    瀏覽(17)
  • 算法沉淀 —— 動(dòng)態(tài)規(guī)劃篇(路徑問題)

    算法沉淀 —— 動(dòng)態(tài)規(guī)劃篇(路徑問題)

    幾乎所有的動(dòng)態(tài)規(guī)劃問題大致可分為以下5個(gè)步驟,后續(xù)所有問題分析都將基于此 1.、狀態(tài)表示:通常狀態(tài)表示分為基本分為以下兩種,其中更是以第一種為甚。 以i為結(jié)尾 ,dp[i] 表示什么,通常為代求問題(具體依題目而定) 以i為開始 ,dp[i]表示什么,通常為代求問題(具

    2024年04月17日
    瀏覽(21)
  • 算法學(xué)習(xí)17-動(dòng)態(tài)規(guī)劃01:背包問題

    算法學(xué)習(xí)17-動(dòng)態(tài)規(guī)劃01:背包問題

    提示:以下是本篇文章正文內(nèi)容: 提示:這里對(duì)文章進(jìn)行總結(jié): ??????

    2024年04月27日
    瀏覽(102)
  • 【算法】動(dòng)態(tài)規(guī)劃中的路徑問題

    【算法】動(dòng)態(tài)規(guī)劃中的路徑問題

    君兮_的個(gè)人主頁 即使走的再遠(yuǎn),也勿忘啟程時(shí)的初心 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,如果給算法的難度和復(fù)雜度排一個(gè)排名,那么動(dòng)態(tài)規(guī)劃算法一定名列前茅。今天,我們通過由簡(jiǎn)單到困難的兩道題目帶大家學(xué)會(huì)動(dòng)態(tài)規(guī)劃中的路徑問題 好了廢話不多說,開始我

    2024年02月05日
    瀏覽(23)
  • 【算法】動(dòng)態(tài)規(guī)劃(dp問題),持續(xù)更新

    介紹本篇之前,我想先用人話敘述一般解決動(dòng)態(tài)規(guī)劃問題的思路: 動(dòng)態(tài)規(guī)劃的問題,本身有許多產(chǎn)生結(jié)果的可能,需要在具體題目下得到滿足某個(gè)條件的解。 如何得到呢? 我們就需要根據(jù)這個(gè)具體問題,建立一個(gè)狀態(tài)表( dp 表 ),在這張 dp 表中的每一個(gè)位置的數(shù)據(jù)都有明

    2024年02月04日
    瀏覽(48)
  • 算法動(dòng)態(tài)規(guī)劃之雜交水果取名問題

    這個(gè)問題需要借鑒到動(dòng)態(tài)規(guī)劃中非常典型的:最大公共子序列問題的算法 【問題描述】 兩種水果雜交出一種新水果,現(xiàn)在給新水果取名,要求這個(gè)名字中包含了以前兩種水果名字的字母,并且這個(gè)名字要盡量短。也就是說以前的一種水果名字 arr1 是新水果名字 arr 的子序列,

    2024年02月09日
    瀏覽(15)
  • 算法沉淀 —— 動(dòng)態(tài)規(guī)劃(子序列問題(上))

    算法沉淀 —— 動(dòng)態(tài)規(guī)劃(子序列問題(上))

    幾乎所有的動(dòng)態(tài)規(guī)劃問題大致可分為以下5個(gè)步驟,后續(xù)所有問題分析都將基于此 1.、狀態(tài)表示:通常狀態(tài)表示分為以下兩種,其中更是第一種為主。 以i為結(jié)尾 ,dp[i] 表示什么,通常為代求問題(具體依題目而定) 以i為開始 ,dp[i]表示什么,通常為代求問題(具體依題目而

    2024年04月15日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包