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

【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

這篇具有很好參考價值的文章主要介紹了【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

Halo,這里是Ppeua。平時主要更新C語言,C++,數(shù)據(jù)結(jié)構(gòu)算法......感興趣就關(guān)注我吧!你定不會失望。

??個人主頁:主頁鏈接

??算法專欄:專欄鏈接

?????我會一直往里填充內(nèi)容噠!

??LeetCode專欄:專欄鏈接?

????目前在刷初級算法的LeetBook 。若每日一題當中有力所能及的題目,也會當天做完發(fā)出

??代碼倉庫:Gitee鏈接

??點擊關(guān)注=收獲更多優(yōu)質(zhì)內(nèi)容??

目錄

題目:戳氣球

題解:

代碼實現(xiàn):

完結(jié)撒花

【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

因為一些事,最近狀態(tài)不是很好,加上今天的每日一題有點難,看的煩躁(就是菜 ,就來更新一下今天與每日一題相關(guān)的區(qū)間Dp問題(戳氣球),這篇也是關(guān)于區(qū)間Dp的問題 uu可以看看?

話不多說,開始!?

題目:戳氣球

【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

題解:

這道題雖然被標為了Hard但依據(jù)Dp的特點,知道其中緣由之后也沒有很難了.先來看看問題

有這樣幾個氣球.我們要求出戳出他之后他掉落的最大金幣數(shù)

【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

例如,在戳掉1,則掉落的金幣數(shù)為周圍兩個金幣數(shù)相乘,再乘上被戳掉的氣球的金幣數(shù)

在思考dp問題的時候,我們需要將每一個子問題劃分為不受周圍影響的獨立的子問題,所以觀察我們剛剛的計算過程.我們發(fā)現(xiàn),掉落的金幣數(shù)與i j是有關(guān)系的

題目提到:如果?i - 1或?i + 1?超出了數(shù)組的邊界,那么就當它是一個數(shù)字為?1?的氣球。

為了避免越界問題,那我們可以設(shè)定兩個虛擬氣球,他們得分都為1,這樣可以將dp的子問題劃分為

dp[i][j]的含義為:在i-1到j(luò)-1當中,戳破氣球獲得的最高分.

根據(jù)區(qū)間dp倒著推問題的特點:我們可以想想在i j當中,最后一個被戳爆的氣球是哪一個.

其實每一個氣球都能成為最后被戳破的那個,所以我們要做的就是在一定區(qū)間內(nèi)去尋找,戳破這個氣球,能獲得最大收益的k值【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

若想要最后一個戳破k,則需要先將i-k的氣球戳破,再將k-j的氣球戳破,之后再將結(jié)果加上戳破k區(qū)間的值即可(注意k是最后一個戳爆的!!他的周圍是沒有球的,所以這就是為什么是獨立的子問題的原因)

dp[i][j]=dp[i][k]+dp[k][j]+val[i]*val[j]*val[k]

觀察發(fā)現(xiàn),這是從小范圍去推大范圍,所以在計算大范圍的時候,小范圍一定是被準備好了.

所以從只有三個氣球的區(qū)間開始計算,慢慢拓展到大的區(qū)間.存儲每個區(qū)間可以獲得的最大金幣,留給之后計算

先看看Base Case是什么,當i j重合的時候,沒有東西可以戳,此時得分為0

【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

當我們計算任何一個Dp[i][j]的時候,我們希望dp[i][k] 與dp[k][j]都已經(jīng)被計算出來了

【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題

所以我們一般采用,自底向上的遍歷方法.

相關(guān)模板:

for(int i=n;i>=0;i--)
    {
        for(int j=i+1;j<n;j++)
        {
            for(int k=i+1;k<j;k++)
            {
                ..........
            }
        }
    }

也就是i從n開始到0結(jié)束,j從i+1開始小于n(這里的n是指不能取到額外給的那兩個氣球),而k介于這二者之間?,為了避免越界問題,我們一般采用n+2的方法

代碼實現(xiàn):

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class Solution {
public:
    int maxCoins(vector<int>& nums) {
        vector<int>val(nums.size()+2);
        val[0]=val[val.size()-1]=1;
        for(int i=1;i<=nums.size();i++)
        {
            val[i]=nums[i-1];
        }
        vector<vector<int>>dp(val.size(),vector<int>(val.size()));
        for(int i=val.size();i>=0;i--)
        {
            for(int j=i+1;j<val.size();j++)
            {
                for(int k=i+1;k<j;k++)
                {
                    dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]+val[i]*val[j]*val[k]);
                }
            }
        }
        return dp[0][val.size()-1];
    }
};

完結(jié)撒花:

??本篇博客的內(nèi)容【LeetCode 312. 戳氣球 --區(qū)間DP問題】已經(jīng)結(jié)束。

??若對你有些許幫助,可以點贊、關(guān)注、評論支持下博主,你的支持將是我前進路上最大的動力。

??若以上內(nèi)容有任何問題,歡迎在評論區(qū)指出。若對以上內(nèi)容有任何不解,都可私信評論詢問。

??諸君,山頂見!文章來源地址http://www.zghlxwxcb.cn/news/detail-415534.html

到了這里,關(guān)于【動態(tài)規(guī)劃】LeetCode 312. 戳氣球 --區(qū)間DP問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 動態(tài)規(guī)劃——區(qū)間DP 學習筆記

    不含四邊形不等式優(yōu)化。 線性動態(tài)規(guī)劃的局限性在于,它只能順推或倒退,而不能有子區(qū)間依賴的問題。 區(qū)間動態(tài)規(guī)劃是線性動態(tài)規(guī)劃的擴展,它將問題劃分為若干個子區(qū)間,并通過定義狀態(tài)和狀態(tài)轉(zhuǎn)移方程來求解每個子區(qū)間的最優(yōu)解,最終得到整個區(qū)間的最優(yōu)解。 區(qū)間動

    2024年02月08日
    瀏覽(31)
  • 動態(tài)規(guī)劃——區(qū)間dp [石子合并]

    動態(tài)規(guī)劃——區(qū)間dp [石子合并]

    動態(tài)規(guī)劃(dp)是一種通過將問題分解為子問題,并利用已解決的子問題的解來求解原問題的方法。適用于具有重疊子問題和最優(yōu)子結(jié)構(gòu)性質(zhì)的優(yōu)化問題。通過定義狀態(tài)和狀態(tài)轉(zhuǎn)移方程,動態(tài)規(guī)劃可以在避免重復(fù)計算的同時找到問題的最優(yōu)解,是一種高效的求解方法,常用于

    2024年02月12日
    瀏覽(21)
  • 動態(tài)規(guī)劃系列 | 一文搞定區(qū)間DP

    動態(tài)規(guī)劃系列 | 一文搞定區(qū)間DP

    區(qū)間 DP 可以用于解決一些涉及到區(qū)間合并或分割的問題。區(qū)間 DP 通常有以下三個特點: 合并(分割) :將兩個或多個部分進行整合,或者反過來將一個區(qū)間分解成多個部分。 特征 :能將問題分解為能兩兩合并的形式。 求解 :對整個問題設(shè)最優(yōu)解,枚舉合并點,將問題分

    2024年02月02日
    瀏覽(22)
  • 石子合并(動態(tài)規(guī)劃 區(qū)間DP)+詳細注釋

    原題鏈接 ? 活動 - AcWing 題目 設(shè)有?N?堆石子排成一排,其編號為?1,2,3,…,N。 每堆石子有一定的質(zhì)量,可以用一個整數(shù)來描述,現(xiàn)在要將這?N?堆石子合并成為一堆。 每次只能合并相鄰的兩堆,合并的代價為這兩堆石子的質(zhì)量之和,合并后與這兩堆石子相鄰的石子將和新堆相

    2024年02月16日
    瀏覽(24)
  • acwing算法基礎(chǔ)之動態(tài)規(guī)劃--線性DP和區(qū)間DP

    線性DP:狀態(tài)轉(zhuǎn)移表達式存在明顯的線性關(guān)系。 區(qū)間DP:與順序有關(guān),狀態(tài)與區(qū)間有關(guān)。 題目1 :數(shù)字三角形。 解題思路:直接DP即可, f[i][j] 可以來自 f[i-1][j] + a[i][j] 和 f[i-1][j-1] + a[i][j] ,注意 f[i-1][j] 不存在的情況(最后一個點)和 f[i-1][j-1] 不存在的情況(第一個點)。

    2024年02月04日
    瀏覽(21)
  • Leetcode動態(tài)規(guī)劃篇(0-1背包問題一維和二維dp實現(xiàn))

    Leetcode動態(tài)規(guī)劃篇(0-1背包問題一維和二維dp實現(xiàn))

    ??專欄:每日算法學習 ??個人主頁:個人主頁 ??情況描述:有n件物品和一個最多能背重量為w 的背包。第i件物品的重量是weight[i],得到的價值是value[i] 。每件物品只能用一次,求解將哪些物品裝入背包里物品價值總和最大。每一件物品其實只有兩個狀態(tài),取或者不取。

    2023年04月09日
    瀏覽(20)
  • 算法基礎(chǔ)復(fù)盤筆記Day11【動態(tài)規(guī)劃】—— 區(qū)間DP、計數(shù)類DP、樹形DP、記憶化搜索

    算法基礎(chǔ)復(fù)盤筆記Day11【動態(tài)規(guī)劃】—— 區(qū)間DP、計數(shù)類DP、樹形DP、記憶化搜索

    ? 作者主頁:歡迎來到我的技術(shù)博客?? ? 個人介紹:大家好,本人熱衷于 Java后端開發(fā) ,歡迎來交流學習哦!( ̄▽ ̄)~* ?? 如果文章對您有幫助,記得 關(guān)注 、 點贊 、 收藏 、 評論 ?????? ?? 您的支持將是我創(chuàng)作的動力,讓我們一起加油進步吧?。。???? 1. 題目

    2024年02月01日
    瀏覽(24)
  • 【動態(tài)規(guī)劃 區(qū)間dp 位運算】100259. 劃分數(shù)組得到最小的值之和

    【動態(tài)規(guī)劃 區(qū)間dp 位運算】100259. 劃分數(shù)組得到最小的值之和

    動態(tài)規(guī)劃 區(qū)間dp 位運算 給你兩個數(shù)組 nums 和 andValues,長度分別為 n 和 m。 數(shù)組的 值 等于該數(shù)組的 最后一個 元素。 你需要將 nums 劃分為 m 個 不相交的連續(xù) 子數(shù)組,對于第 ith 個子數(shù)組 [li, ri],子數(shù)組元素的按位AND運算結(jié)果等于 andValues[i],換句話說,對所有的 1 = i = m,n

    2024年04月15日
    瀏覽(25)
  • AcWing算法學習筆記:動態(tài)規(guī)劃(背包 + 線性dp + 區(qū)間dp + 計數(shù)dp + 狀態(tài)壓縮dp + 樹形dp + 記憶化搜索)

    AcWing算法學習筆記:動態(tài)規(guī)劃(背包 + 線性dp + 區(qū)間dp + 計數(shù)dp + 狀態(tài)壓縮dp + 樹形dp + 記憶化搜索)

    算法 復(fù)雜度 時間復(fù)雜度0(nm) 空間復(fù)雜度0(nv) 代碼 算法 通過滾動數(shù)組對01背包樸素版進行空間上的優(yōu)化 f[i] 與 f[i - 1]輪流交替 若體積從小到大進行遍歷,當更新f[i, j]時,f[i - 1, j - vi] 已經(jīng)在更新f[i, j - vi]時被更新了 因此體積需要從大到小進行遍歷,當更新f[i, j]時,f[i - 1,

    2024年02月21日
    瀏覽(21)
  • c++11/c++98動態(tài)規(guī)劃入門第5課,經(jīng)典DP問題 --- 區(qū)間

    c++11/c++98動態(tài)規(guī)劃入門第5課,經(jīng)典DP問題 --- 區(qū)間

    第1題 ??? 取數(shù)問題?查看測評數(shù)據(jù)信息 ? ??有一排N個數(shù),你和小明2個人玩游戲,每個人輪流從2端取數(shù),每次可以從左或右取,不能從中間取。你取的所有的數(shù)的和是你的得分,小明取的所有的數(shù)的和是小明的得分。如果你先取,你最多比小明多得多少分? 輸入格式 ??第

    2024年02月12日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包