国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè) 珠海營銷培訓(xùn)課程有哪些

網(wǎng)站建設(shè) 珠海,營銷培訓(xùn)課程有哪些,做簡單網(wǎng)站用什么軟件,網(wǎng)站提交做外鏈有什么作用day54392.判斷子序列1.確定dp數(shù)組(dp table)以及下標(biāo)的含義2.確定遞推公式3.dp數(shù)組如何初始化4.確定遍歷順序5.舉例推導(dǎo)dp數(shù)組115.不同的子序列1.確定dp數(shù)組(dp table)以及下標(biāo)的含義2.確定遞推公式3.dp數(shù)組如何初始化4.確定遍歷順…

day54

      • 392.判斷子序列
        • 1.確定dp數(shù)組(dp table)以及下標(biāo)的含義
        • 2.確定遞推公式
        • 3.dp數(shù)組如何初始化
        • 4.確定遍歷順序
        • 5.舉例推導(dǎo)dp數(shù)組
      • 115.不同的子序列
        • 1.確定dp數(shù)組(dp table)以及下標(biāo)的含義
        • 2.確定遞推公式
        • 3.dp數(shù)組如何初始化
        • 4.確定遍歷順序
        • 5.舉例推導(dǎo)dp數(shù)組

392.判斷子序列

題目鏈接
**解題思路:**動態(tài)規(guī)劃五部曲分析如下:

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

dp[i][j] 表示以下標(biāo)i-1為結(jié)尾的字符串s,和以下標(biāo)j-1為結(jié)尾的字符串t,相同子序列的長度為dp[i][j]。

注意這里是判斷s是否為t的子序列。即t的長度是大于等于s的。

有同學(xué)問了,為啥要表示下標(biāo)i-1為結(jié)尾的字符串呢,為啥不表示下標(biāo)i為結(jié)尾的字符串呢?

2.確定遞推公式

在確定遞推公式的時(shí)候,首先要考慮如下兩種操作,整理如下:

  • if (s[i - 1] == t[j - 1])
    • t中找到了一個(gè)字符在s中也出現(xiàn)了
  • if (s[i - 1] != t[j - 1])
    • 相當(dāng)于t要刪除元素,繼續(xù)匹配

if (s[i - 1] == t[j - 1]),那么dp[i][j] = dp[i - 1][j - 1] + 1;,因?yàn)檎业搅艘粋€(gè)相同的字符,相同子序列長度自然要在dp[i-1][j-1]的基礎(chǔ)上加1(如果不理解,在回看一下dp[i][j]的定義)

if (s[i - 1] != t[j - 1]),此時(shí)相當(dāng)于t要刪除元素,t如果把當(dāng)前元素t[j - 1]刪除,那么dp[i][j] 的數(shù)值就是 看s[i - 1]t[j - 2]的比較結(jié)果了,即:dp[i][j] = dp[i][j - 1];

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

從遞推公式可以看出dp[i][j]都是依賴于dp[i - 1][j - 1]dp[i][j - 1],所以dp[0][0]dp[i][0]是一定要初始化的。

這里大家已經(jīng)可以發(fā)現(xiàn),在定義dp[i][j]含義的時(shí)候?yàn)槭裁匆?strong>表示以下標(biāo)i-1為結(jié)尾的字符串s,和以下標(biāo)j-1為結(jié)尾的字符串t,相同子序列的長度為dp[i][j]。

因?yàn)檫@樣的定義在dp二維矩陣中可以留出初始化的區(qū)間,如圖:
在這里插入圖片描述

如果要是定義的dp[i][j]是以下標(biāo)i為結(jié)尾的字符串s和以下標(biāo)j為結(jié)尾的字符串t,初始化就比較麻煩了。

dp[i][0] 表示以下標(biāo)i-1為結(jié)尾的字符串,與空字符串的相同子序列長度,所以為0. dp[0][j]同理。

vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));

4.確定遍歷順序

同理從遞推公式可以看出dp[i][j]都是依賴于dp[i - 1][j - 1]dp[i][j - 1],那么遍歷順序也應(yīng)該是從上到下,從左到右
如圖所示:
在這里插入圖片描述

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

以示例一為例,輸入:s = “abc”, t = “ahbgdc”,dp狀態(tài)轉(zhuǎn)移圖如下:
在這里插入圖片描述

dp[i][j]表示以下標(biāo)i-1為結(jié)尾的字符串s和以下標(biāo)j-1為結(jié)尾的字符串t 相同子序列的長度,所以如果dp[s.size()][t.size()] 與 字符串s的長度相同說明:s與t的最長相同子序列就是s,那么s 就是 t 的子序列。

圖中dp[s.size()][t.size()] = 3, 而s.size() 也為3。所以s是t 的子序列,返回true。

動規(guī)五部曲分析完畢,C++代碼如下:

class Solution {
public:bool isSubsequence(string s, string t) {vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));for (int i = 1; i <= s.size(); i++) {for (int j = 1; j <= t.size(); j++) {if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;else dp[i][j] = dp[i][j - 1];}}if (dp[s.size()][t.size()] == s.size()) return true;return false;}
};

115.不同的子序列

題目鏈接
解題思路:

動規(guī)五部曲分析如下:

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

dp[i][j]:以i-1為結(jié)尾的s子序列中出現(xiàn)以j-1為結(jié)尾的t的個(gè)數(shù)為dp[i][j]。

2.確定遞推公式

這一類問題,基本是要分析兩種情況

  • s[i - 1] 與 t[j - 1]相等
  • s[i - 1] 與 t[j - 1] 不相等

當(dāng)s[i - 1]t[j - 1]相等時(shí),dp[i][j]可以有兩部分組成。

一部分是用s[i - 1]來匹配,那么個(gè)數(shù)為dp[i - 1][j - 1]。即不需要考慮當(dāng)前s子串和t子串的最后一位字母,所以只需要 dp[i-1][j-1]。

一部分是不用s[i - 1]來匹配,個(gè)數(shù)為dp[i - 1][j]。

例如: s:bagg 和 t:bag ,s[3] 和 t[2]是相同的,但是字符串s也可以不用s[3]來匹配,即用s[0]s[1]s[2]組成的bag。

當(dāng)然也可以用s[3]來匹配,即:s[0]s[1]s[3]組成的bag。

所以當(dāng)s[i - 1]t[j - 1]相等時(shí),dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];

當(dāng)s[i - 1]t[j - 1]不相等時(shí),dp[i][j]只有一部分組成,不用s[i - 1]來匹配(就是模擬在s中刪除這個(gè)元素),即:dp[i - 1][j]

所以遞推公式為:dp[i][j] = dp[i - 1][j];

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

從遞推公式dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];dp[i][j] = dp[i - 1][j]; 中可以看出dp[i][j] 是從上方和左上方推導(dǎo)而來,如圖:,那么 dp[i][0]dp[0][j]是一定要初始化的。
在這里插入圖片描述

每次當(dāng)初始化的時(shí)候,都要回顧一下dp[i][j]的定義,不要憑感覺初始化。

dp[i][0]表示什么呢?

dp[i][0] 表示:以i-1為結(jié)尾的s可以隨便刪除元素,出現(xiàn)空字符串的個(gè)數(shù)。

那么dp[i][0]一定都是1,因?yàn)橐簿褪前岩?code>i-1為結(jié)尾的s,刪除所有元素,出現(xiàn)空字符串的個(gè)數(shù)就是1。

再來看dp[0][j]dp[0][j]:空字符串s可以隨便刪除元素,出現(xiàn)以j-1為結(jié)尾的字符串t的個(gè)數(shù)。

那么dp[0][j]一定都是0,s如論如何也變成不了t。

最后就要看一個(gè)特殊位置了,即:dp[0][0] 應(yīng)該是多少。

dp[0][0]應(yīng)該是1,空字符串s,可以刪除0個(gè)元素,變成空字符串t。

初始化分析完畢,代碼如下:

vector<vector<long long>> dp(s.size() + 1, vector<long long>(t.size() + 1));
for (int i = 0; i <= s.size(); i++) dp[i][0] = 1;
for (int j = 1; j <= t.size(); j++) dp[0][j] = 0; // 其實(shí)這行代碼可以和dp數(shù)組初始化的時(shí)候放在一起,但我為了凸顯初始化的邏輯,所以還是加上了。

4.確定遍歷順序

從遞推公式dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];dp[i][j] = dp[i - 1][j]; 中可以看出dp[i][j]都是根據(jù)左上方和正上方推出來的。
在這里插入圖片描述

所以遍歷的時(shí)候一定是從上到下,從左到右,這樣保證dp[i][j]可以根據(jù)之前計(jì)算出來的數(shù)值進(jìn)行計(jì)算。

代碼如下:

for (int i = 1; i <= s.size(); i++) {for (int j = 1; j <= t.size(); j++) {if (s[i - 1] == t[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];} else {dp[i][j] = dp[i - 1][j];}}
}

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

以s:“baegg”,t:"bag"為例,推導(dǎo)dp數(shù)組狀態(tài)如下:
在這里插入圖片描述

動規(guī)五部曲分析完畢,代碼如下:

class Solution {
public:int numDistinct(string s, string t) {vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1));for (int i = 0; i < s.size(); i++) dp[i][0] = 1;for (int j = 1; j < t.size(); j++) dp[0][j] = 0;for (int i = 1; i <= s.size(); i++) {for (int j = 1; j <= t.size(); j++) {if (s[i - 1] == t[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];} else {dp[i][j] = dp[i - 1][j];}}}return dp[s.size()][t.size()];}
};
http://m.aloenet.com.cn/news/40901.html

相關(guān)文章:

  • 城關(guān)區(qū)建設(shè)局網(wǎng)站百度廣告費(fèi)一般多少錢
  • 手機(jī)網(wǎng)站開發(fā) pdf最新旅游熱點(diǎn)
  • 王妃貌美還狠兇搜索引擎優(yōu)化的作用
  • 家裝效果圖seo管理系統(tǒng)培訓(xùn)運(yùn)營
  • 網(wǎng)站制作和網(wǎng)頁制作區(qū)別上海百度推廣優(yōu)化排名
  • flash可以做網(wǎng)站seo優(yōu)化運(yùn)營
  • 柳市那些做網(wǎng)站的公司定制網(wǎng)站和模板建站
  • 做網(wǎng)站經(jīng)常加班還是app武漢seo優(yōu)化
  • 商業(yè)網(wǎng)站建設(shè)視頻教程關(guān)鍵詞排名優(yōu)化教程
  • 公司網(wǎng)站建設(shè)的系統(tǒng)功能需求分析安徽seo推廣
  • 和平區(qū)網(wǎng)站建設(shè)房地產(chǎn)估價(jià)師考試
  • 經(jīng)營性網(wǎng)站必須備案排名優(yōu)化關(guān)鍵詞
  • 這么做3d展示網(wǎng)站優(yōu)化網(wǎng)站排名的方法
  • 網(wǎng)站建設(shè)完整南寧白帽seo技術(shù)
  • 手工企業(yè)網(wǎng)站模板企業(yè)網(wǎng)站制作公司
  • 淮安哪里有做網(wǎng)站的北京網(wǎng)站seo技術(shù)廠家
  • 網(wǎng)站改版方案原則百度關(guān)鍵詞搜索量排名
  • 網(wǎng)站建設(shè)財(cái)務(wù)上怎么處理寧波seo推廣推薦
  • 網(wǎng)站怎么解析到域名推廣類軟文
  • 免費(fèi)word模板下載哪個(gè)網(wǎng)站網(wǎng)站建設(shè)方案書范文
  • wordpress 整站音樂看廣告收益的正規(guī)平臺
  • 貴溪市城鄉(xiāng)建設(shè)局網(wǎng)站推廣公眾號的9種方法
  • 網(wǎng)站建設(shè)和購買區(qū)別網(wǎng)絡(luò)推廣100種方法
  • 動態(tài)網(wǎng)站建設(shè)的一般步驟免費(fèi)的h5制作網(wǎng)站
  • wordpress恢復(fù)源代碼willfast優(yōu)化工具下載
  • 電子商務(wù)網(wǎng)站設(shè)計(jì)畢業(yè)設(shè)計(jì)論文競價(jià)推廣員月掙多少
  • 網(wǎng)站怎么做優(yōu)化排名推廣下載
  • 福州外包加工網(wǎng)廈門seo優(yōu)化推廣
  • 保定設(shè)計(jì)網(wǎng)站建設(shè)寧波做網(wǎng)站的公司
  • 網(wǎng)站建設(shè)公司公司哪家好北京seo排名優(yōu)化網(wǎng)站