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

【學(xué)會(huì)動(dòng)態(tài)規(guī)劃】打家劫舍 II(12)

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

目錄

動(dòng)態(tài)規(guī)劃怎么學(xué)?

1. 題目解析

2. 算法原理

1. 狀態(tài)表示

2. 狀態(tài)轉(zhuǎn)移方程

3. 初始化

4. 填表順序

5. 返回值

3. 代碼編寫

寫在最后:


動(dòng)態(tài)規(guī)劃怎么學(xué)?

學(xué)習(xí)一個(gè)算法沒有捷徑,更何況是學(xué)習(xí)動(dòng)態(tài)規(guī)劃,

跟我一起刷動(dòng)態(tài)規(guī)劃算法題,一起學(xué)會(huì)動(dòng)態(tài)規(guī)劃!

1. 題目解析

題目鏈接:213. 打家劫舍 II - 力扣(Leetcode)

【學(xué)會(huì)動(dòng)態(tài)規(guī)劃】打家劫舍 II(12),學(xué)會(huì)動(dòng)態(tài)規(guī)劃,動(dòng)態(tài)規(guī)劃,算法,學(xué)習(xí),c++

?這道題目也不難理解,

他和打家劫舍第一個(gè)版本只有一個(gè)差別,就是他的首尾是相連的,

其他的條件都是一致的。

那我們其實(shí)可以分析一下,我們能把這道題目轉(zhuǎn)換成打家劫舍第一個(gè)版本嗎?

如果我們偷0位置,那1位置就不能偷,那我們的2~n-2位置,就能為所欲為

如果我們不偷0位置,那我們1~n-1的位置就能為所欲為(轉(zhuǎn)換成打家劫舍I)

所以最后返回的值就是這兩種情況的最大值。

2. 算法原理

1. 狀態(tài)表示

?f [ i ] 表示偷到 i 位置時(shí),偷 nums[ i ],此時(shí)的最大金額

g [ i ] 表示偷到 i 位置時(shí),不偷 nums[ i ],此時(shí)的最大金額

2. 狀態(tài)轉(zhuǎn)移方程????????????????

根據(jù)我們的狀態(tài)表示,我們可以得出:

f [ i ] = g [ i -?1 ] + nums[ i ]

g [ i ] = max( f [ i - 1 ],g [ i - 1 ]?)

3. 初始化

f [ 0 ] = num[ 0 ], g [ 0 ] =?0

4. 填表順序

從左往右

5. 返回值

max(?f [ n - 1?],g [ n - 1 ] )

3. 代碼編寫

class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        return max(nums[0] + rob1(nums, 2, n - 2) , rob1(nums, 1, n - 1));
    }
private:
    int rob1(const vector<int>& nums, int start, int n) {
        if(start > n) return 0;
        int size = nums.size();
        vector<int> f(size);
        auto g = f;
        f[start] = nums[start];
        for(int i = start + 1; i <= n; i++) {
            f[i] = g[i - 1] + nums[i];
            g[i] = max(f[i - 1], g[i - 1]);
        } 
        return max(f[n], g[n]);
    }
};

寫在最后:

以上就是本篇文章的內(nèi)容了,感謝你的閱讀。

如果感到有所收獲的話可以給博主點(diǎn)一個(gè)哦。

如果文章內(nèi)容有遺漏或者錯(cuò)誤的地方歡迎私信博主或者在評(píng)論區(qū)指出~文章來源地址http://www.zghlxwxcb.cn/news/detail-617937.html

到了這里,關(guān)于【學(xué)會(huì)動(dòng)態(tài)規(guī)劃】打家劫舍 II(12)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 打家劫舍 II問題的動(dòng)態(tài)規(guī)劃解決方案及C++代碼實(shí)現(xiàn)

    打家劫舍 II問題的動(dòng)態(tài)規(guī)劃解決方案及C++代碼實(shí)現(xiàn)

    解決打家劫舍 II問題涉及動(dòng)態(tài)規(guī)劃,將環(huán)形問題轉(zhuǎn)化為兩個(gè)單排問題。通過狀態(tài)轉(zhuǎn)移方程和初始化,計(jì)算可以偷竊到的最高金額。C++代碼實(shí)現(xiàn)包括狀態(tài)顯示、狀態(tài)轉(zhuǎn)移方程、初始化、填表順序和返回值。

    2024年01月21日
    瀏覽(25)
  • 【四】【C語言\動(dòng)態(tài)規(guī)劃】地下城游戲、按摩師、打家劫舍 II,三道題目深度解析

    【四】【C語言\動(dòng)態(tài)規(guī)劃】地下城游戲、按摩師、打家劫舍 II,三道題目深度解析

    動(dòng)態(tài)規(guī)劃就像是解決問題的一種策略,它可以幫助我們更高效地找到問題的解決方案。這個(gè)策略的核心思想就是將問題分解為一系列的小問題,并將每個(gè)小問題的解保存起來。這樣,當(dāng)我們需要解決原始問題的時(shí)候,我們就可以直接利用已經(jīng)計(jì)算好的小問題的解,而不需要重

    2024年02月04日
    瀏覽(26)
  • 動(dòng)態(tài)規(guī)劃_打家劫舍(Ⅰ~Ⅲ)

    打家劫舍系列 返回最大金額 不能同時(shí)取相鄰兩個(gè)數(shù) 數(shù)組數(shù)據(jù)全部非負(fù) ①dp數(shù)組含義 dp[i]表示前i個(gè)數(shù)中按規(guī)則取出的最大總和 ②遞推公式 dp[i]=max(dp[i-1],dp[i-2]+nums[i]) 當(dāng)前最優(yōu)可以從兩個(gè)狀態(tài)推出(前提是前面已經(jīng)為最優(yōu)解): 1° 前一個(gè)數(shù)未取:則當(dāng)前數(shù)取了,則總和最大

    2024年02月03日
    瀏覽(23)
  • leetcode-打家劫舍專題系列(動(dòng)態(tài)規(guī)劃)

    leetcode-打家劫舍專題系列(動(dòng)態(tài)規(guī)劃)

    你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)警。 給定一個(gè)代表每個(gè)房屋存放金額的非負(fù)整數(shù)數(shù)組,計(jì)算你 不觸動(dòng)

    2024年04月14日
    瀏覽(24)
  • 力扣198. 打家劫舍(java 動(dòng)態(tài)規(guī)劃)

    力扣198. 打家劫舍(java 動(dòng)態(tài)規(guī)劃)

    Problem: 198. 打家劫舍 1.構(gòu)建多階段決策模型:n個(gè)房屋對(duì)應(yīng)n個(gè)階段,每一個(gè)階段決定一個(gè)房間是偷還是不偷,兩種決策:偷、不偷 2.定義狀態(tài):不能記錄每個(gè)階段決策完之后,小偷可偷的最大金額,需要記錄不同決策對(duì)應(yīng)的最大金額,也就是:這個(gè)房屋偷-對(duì)應(yīng)的最大金額;這

    2024年01月21日
    瀏覽(23)
  • 【LeetCode熱題100】198. 打家劫舍(動(dòng)態(tài)規(guī)劃)

    你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房內(nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng), 如果兩間相鄰的房屋在同一晚上被小偷闖入,系統(tǒng)會(huì)自動(dòng)報(bào)警。 給定一個(gè)代表每個(gè)房屋存放金額的非負(fù)整數(shù)數(shù)組,計(jì)算你 不觸動(dòng)

    2024年04月11日
    瀏覽(26)
  • 動(dòng)態(tài)規(guī)劃-經(jīng)典dp(打家劫舍,股票等)

    動(dòng)態(tài)規(guī)劃-經(jīng)典dp(打家劫舍,股票等)

    1.1.1 爬樓梯 ?由于求的是組合數(shù),我們將不同路徑相加即可 dp定義: dp[i]為爬到第i階樓梯的方法數(shù); 轉(zhuǎn)移方程: 初始化: ?由于涉及到i-2和i-1,那么我們要從i=2開始遍歷,因此要初始化dp[0] = 0,dp[1] = 1(根據(jù)定義) 遍歷順序: 從左往右? 完整代碼: ?1.1.2?使用最小花費(fèi)爬樓梯

    2024年01月19日
    瀏覽(26)
  • leetcode 343.整數(shù)拆分 198.打家劫舍(動(dòng)態(tài)規(guī)劃)

    leetcode 343.整數(shù)拆分 198.打家劫舍(動(dòng)態(tài)規(guī)劃)

    ? ?OJ鏈接 :leetcode 343.整數(shù)拆分 代碼:? OJ鏈接 :198.打家劫舍 ? ?代碼:

    2024年02月05日
    瀏覽(38)
  • 動(dòng)態(tài)規(guī)劃day09(打家劫舍,樹形dp)

    動(dòng)態(tài)規(guī)劃day09(打家劫舍,樹形dp)

    目錄 198.打家劫舍 看到題目的第一想法 看到代碼隨想錄之后的想法 自己實(shí)現(xiàn)過程中遇到的困難 213.打家劫舍II 看到題目的第一想法 看到代碼隨想錄之后的想法 自己實(shí)現(xiàn)過程中遇到的困難 337.打家劫舍 III(樹形dp) 看到題目的第一想法 看到代碼隨想錄之后的想法 自己實(shí)現(xiàn)過程中

    2024年01月23日
    瀏覽(23)
  • Day 42 算法記錄|動(dòng)態(tài)規(guī)劃 09 (打家劫舍)

    Day 42 算法記錄|動(dòng)態(tài)規(guī)劃 09 (打家劫舍)

    1.dp[i]:考慮下標(biāo)i(包括i)以內(nèi)的房屋,最多可以偷竊的金額為dp[i]。 2.dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]); 3.初始化,dp[0] 和 dp[1],dp[0] 一定是 nums[0],dp[1] = max(nums[0], nums[1]); 3.遍歷順序,dp[i] 是根據(jù)dp[i - 2] 和 dp[i - 1] 推導(dǎo)出來的,那么一定是從前到后遍歷! 進(jìn)一步對(duì)滾動(dòng)數(shù)組

    2024年02月15日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包