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

Day46- 動(dòng)態(tài)規(guī)劃part14

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

一、最長(zhǎng)公共子序列

題目一:1143. 最長(zhǎng)公共子序列

1143. 最長(zhǎng)公共子序列

給定兩個(gè)字符串?text1?和?text2,返回這兩個(gè)字符串的最長(zhǎng)?公共子序列?的長(zhǎng)度。如果不存在?公共子序列?,返回?0?。

一個(gè)字符串的?子序列?是指這樣一個(gè)新的字符串:它是由原字符串在不改變字符的相對(duì)順序的情況下刪除某些字符(也可以不刪除任何字符)后組成的新字符串。

  • 例如,"ace"?是?"abcde"?的子序列,但?"aec"?不是?"abcde"?的子序列。

兩個(gè)字符串的?公共子序列?是這兩個(gè)字符串所共同擁有的子序列。

定義一個(gè)二維數(shù)組dp,其中dp[i][j]代表text1中前i個(gè)字符與text2中前j個(gè)字符的最長(zhǎng)公共子序列的長(zhǎng)度。對(duì)于數(shù)組中的每個(gè)位置dp[i][j],有兩種情況:

  1. 如果text1[i-1] == text2[j-1],則說(shuō)明這兩個(gè)字符匹配,可以在之前找到的最長(zhǎng)公共子序列的基礎(chǔ)上加1,即dp[i][j] = dp[i-1][j-1] + 1
  2. 如果text1[i-1] != text2[j-1],則說(shuō)明這兩個(gè)字符不匹配,需要從兩個(gè)可能的最長(zhǎng)公共子序列中選擇較長(zhǎng)的一個(gè),即dp[i][j] = max(dp[i-1][j], dp[i][j-1])。

初始條件是dp[0][j] = 0dp[i][0] = 0,因?yàn)槿绻渲幸粋€(gè)字符串為空,則最長(zhǎng)公共子序列的長(zhǎng)度為0。

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        int m = text1.length(), n = text2.length();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
    
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (text1[i - 1] == text2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                } else {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }
            }   
        }
    
        return dp[m][n];
    }
};

二、不相交的線

題目一:1035. 不相交的線

1035. 不相交的線

在兩條獨(dú)立的水平線上按給定的順序?qū)懴?nums1?和?nums2?中的整數(shù)。

現(xiàn)在,可以繪制一些連接兩個(gè)數(shù)字?nums1[i]?和?nums2[j]?的直線,這些直線需要同時(shí)滿足滿足:

  • ?nums1[i] == nums2[j]
  • 且繪制的直線不與任何其他連線(非水平線)相交。

請(qǐng)注意,連線即使在端點(diǎn)也不能相交:每個(gè)數(shù)字只能屬于一條連線。

以這種方法繪制線條,并返回可以繪制的最大連線數(shù)。

定義一個(gè)二維數(shù)組dp,其中dp[i][j]代表nums1中前i個(gè)元素和nums2中前j個(gè)元素可以形成的最大連線數(shù)。對(duì)于數(shù)組中的每個(gè)位置dp[i][j],有兩種情況:

  1. 如果nums1[i-1] == nums2[j-1],說(shuō)明找到了一個(gè)匹配對(duì),可以在之前找到的最大連線數(shù)的基礎(chǔ)上加1,即dp[i][j] = dp[i-1][j-1] + 1
  2. 如果nums1[i-1] != nums2[j-1],說(shuō)明當(dāng)前的兩個(gè)元素不能形成連線,需要從之前的結(jié)果中選擇最大的那個(gè),即dp[i][j] = max(dp[i-1][j], dp[i][j-1])。

初始條件是dp[0][j] = 0dp[i][0] = 0,因?yàn)槿绻渲幸粋€(gè)序列為空,則最大連線數(shù)為0。

class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        int m = nums1.size(), n = nums2.size();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
    
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (nums1[i - 1] == nums2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                } else {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }
            }
        }
    
        return dp[m][n];
    }
};

三、最大子數(shù)組和

題目一:53. 最大子數(shù)組和?

53. 最大子數(shù)組和

給你一個(gè)整數(shù)數(shù)組?nums?,請(qǐng)你找出一個(gè)具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個(gè)元素),返回其最大和。

子數(shù)組?是數(shù)組中的一個(gè)連續(xù)部分。

算法的核心思想是遍歷數(shù)組,同時(shí)維護(hù)兩個(gè)變量:currentSum表示到當(dāng)前元素為止的最大子數(shù)組和(包含當(dāng)前元素),maxSum表示遍歷到目前為止的最大子數(shù)組和。

對(duì)于數(shù)組中的每個(gè)元素,將其加到currentSum中,如果currentSum變成負(fù)數(shù),就將currentSum重置為0,因?yàn)槿魏伟懊娌糠值淖訑?shù)組都不可能是最大子數(shù)組和。

同時(shí),更新maxSumcurrentSummaxSum中的較大值。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-831896.html

class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        int m = nums1.size(), n = nums2.size();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
    
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (nums1[i - 1] == nums2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                } else {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }
            }
        }
    
        return dp[m][n];
    }
};

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

本文來(lái)自互聯(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)文章

  • 代碼隨想錄算法訓(xùn)練51 | 動(dòng)態(tài)規(guī)劃part12

    本題加了一個(gè)冷凍期,狀態(tài)就多了,有點(diǎn)難度,大家要把各個(gè)狀態(tài)分清,思路才能清晰? 視頻講解: 動(dòng)態(tài)規(guī)劃來(lái)決定最佳時(shí)機(jī),這次有冷凍期!| LeetCode:309.買賣股票的最佳時(shí)機(jī)含冷凍期_嗶哩嗶哩_bilibili 代碼隨想錄 相對(duì)122.買賣股票的最佳時(shí)機(jī)II?,本題只需要在計(jì)算賣出操

    2024年01月18日
    瀏覽(51)
  • 二刷代碼隨想錄——?jiǎng)討B(tài)規(guī)劃day40

    一個(gè)本碩雙非的小菜雞,備戰(zhàn)24年秋招,計(jì)劃二刷完卡子哥的刷題計(jì)劃,加油! 二刷決定精刷了,于是參加了卡子哥的刷題班,訓(xùn)練營(yíng)為期60天,我一定能堅(jiān)持下去,迎來(lái)兩個(gè)月后的脫變的,加油! 推薦一手卡子哥的刷題網(wǎng)站,感謝卡子哥。代碼隨想錄 終于來(lái)到了守關(guān)boss。

    2024年03月11日
    瀏覽(85)
  • 【代碼隨想錄】Day 49 動(dòng)態(tài)規(guī)劃10 (買賣股票Ⅰ、Ⅱ)

    【代碼隨想錄】Day 49 動(dòng)態(tài)規(guī)劃10 (買賣股票Ⅰ、Ⅱ)

    https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ dp[i]表示在第i天時(shí),賣/不賣股票能獲得的最大利潤(rùn): 1、賣股票:dp[i] = prices[i] -minPrice(i天以前的最低價(jià)格) 2、不賣股票:dp[i] = dp[i-1](因?yàn)椴毁u股票,所以狀態(tài)和前一天保持一致) ∴dp[i] = max(dp[i-1], prices[i] - minPrice); https

    2024年02月09日
    瀏覽(18)
  • Day39 代碼隨想錄(1刷) 動(dòng)態(tài)規(guī)劃 0-1背包

    題目描述 小明是一位科學(xué)家,他需要參加一場(chǎng)重要的國(guó)際科學(xué)大會(huì),以展示自己的最新研究成果。他需要帶一些研究材料,但是他的行李箱空間有限。這些研究材料包括實(shí)驗(yàn)設(shè)備、文獻(xiàn)資料和實(shí)驗(yàn)樣本等等,它們各自占據(jù)不同的空間,并且具有不同的價(jià)值。? 小明的行李空間

    2024年04月23日
    瀏覽(33)
  • 【Day52】代碼隨想錄之動(dòng)態(tài)規(guī)劃_打家劫舍

    動(dòng)態(tài)規(guī)劃理論基礎(chǔ) 動(dòng)規(guī)五部曲: 確定dp數(shù)組 下標(biāo)及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯(cuò)。 打印dp日志和

    2024年02月22日
    瀏覽(28)
  • 【Day42】代碼隨想錄之動(dòng)態(tài)規(guī)劃0-1背包_416. 分割等和子集

    【Day42】代碼隨想錄之動(dòng)態(tài)規(guī)劃0-1背包_416. 分割等和子集

    動(dòng)態(tài)規(guī)劃理論基礎(chǔ) 動(dòng)規(guī)五部曲: 確定dp數(shù)組 下標(biāo)及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 推導(dǎo)dp數(shù)組。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯(cuò)。 打印

    2024年02月20日
    瀏覽(97)
  • 我在代碼隨想錄|寫代碼Day33 | 動(dòng)態(tài)規(guī)劃| 路徑問(wèn)題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    我在代碼隨想錄|寫代碼Day33 | 動(dòng)態(tài)規(guī)劃| 路徑問(wèn)題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    ??博客介紹`: 27dCnc ??系列專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 算法入門 C++項(xiàng)目 ?? 當(dāng)前專欄: 算法入門 專題 : 數(shù)據(jù)結(jié)構(gòu)幫助小白快速入門算法 ???????????????????????? ☆*: .?. o(≧▽≦)o .?.:*☆ ??感謝大家點(diǎn)贊??收藏?評(píng)論?? 今日學(xué)習(xí)打卡 代碼隨想錄 - 動(dòng)態(tài)規(guī)劃

    2024年03月11日
    瀏覽(97)
  • 代碼隨想錄刷題 Day14

    二叉法的前中后序的遍歷, 前中后所說(shuō)的是根節(jié)點(diǎn)輸出的順序;? 有兩種遍歷方式, 1. 遞歸法 (自己調(diào)用自己,本質(zhì)是用棧) 代碼比較簡(jiǎn)單,但是需要?jiǎng)?chuàng)建一個(gè)額外的函數(shù)來(lái)進(jìn)行自己調(diào)用自己的過(guò)程;用遞歸法的話三種遍歷方式只需要改變代碼的位置就可以。 Leetcode 對(duì)應(yīng)

    2024年02月08日
    瀏覽(26)
  • 代碼隨想錄 Day35 動(dòng)態(tài)規(guī)劃04 01背包問(wèn)題和完全背包問(wèn)題 LeetCode T416 分割等和子集

    代碼隨想錄 Day35 動(dòng)態(tài)規(guī)劃04 01背包問(wèn)題和完全背包問(wèn)題 LeetCode T416 分割等和子集

    說(shuō)到背包問(wèn)題大家都會(huì)想到使用動(dòng)規(guī)的方式來(lái)求解,那么為什么用動(dòng)規(guī)呢, dp數(shù)組代表什么呢 ? 初始化是什么 , 遍歷方式又是什么 ,這篇文章筆者將詳細(xì)講解背包問(wèn)題的經(jīng)典例題0-1背包問(wèn)題和完全背包問(wèn)題的解題方式,希望能幫助到大家 有人一提到背包問(wèn)題就只會(huì)使用動(dòng)態(tài)規(guī)劃來(lái)

    2024年02月06日
    瀏覽(124)
  • 【Day43】代碼隨想錄之動(dòng)態(tài)規(guī)劃0-1背包_1049. 最后一塊石頭的重量 II_494. 目標(biāo)和_ 474.一和零

    動(dòng)態(tài)規(guī)劃理論基礎(chǔ) 動(dòng)規(guī)五部曲: 確定dp數(shù)組 下標(biāo)及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯(cuò)。 打印dp日志和

    2024年02月22日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包