Day40:139.單詞拆分、背包問題總結

文章目錄

    • 139.單詞拆分
      • 思路
      • 代碼實現
    • 背包問題總結
      • 背包類型
      • 遞推公式


139.單詞拆分

題目鏈接

思路

  1. 確定dp數組以及下標的含義
    dp[i] : 從0開始長度為i的字符串是否可以拆分為一個或多個在字典中出現的單詞
  2. 確定遞推公式
    如果確定dp[j] 是true,且 [j, i] 這個區間的子串出現在字典里,那么dp[i]一定是true。(j < i )。
    遞推公式是 if([j, i] 這個區間的子串出現在字典里 && dp[j]是true)
  3. dp數組如何初始化
    dp[0]一定要為true,否則遞推下去后面都都是false了。下標非0的dp[i]初始化為false
  4. 確定遍歷順序
    本題其實我們求的是排列數。
    拿 s = “applepenapple”, wordDict = [“apple”, “pen”] 舉例:
    “apple”, “pen” 是物品,那么我們要求 物品的組合一定是 “apple” + “pen” + “apple” 才能組成 “applepenapple”。
    “apple” + “apple” + “pen” 或者 “pen” + “apple” + “apple” 是不可以的,那么我們就是強調物品之間順序。
    所以說,本題一定是先遍歷背包,再遍歷物品。
  5. 舉例推導dp[i]

代碼實現

有一個困惑點,為什么不能用wordSet.size()而必須用s.size()

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet(wordDict.begin(), wordDict.end());vector<bool> dp(s.size() + 1, false);dp[0] = true;for (int i = 1; i <= s.size(); i++) {   // 遍歷背包for (int j = 0; j < i; j++) {       // 遍歷物品string word = s.substr(j, i - j); //substr(起始位置,截取的個數)if (wordSet.find(word) != wordSet.end() && dp[j]) {dp[i] = true;}}}return dp[s.size()];}
};

背包問題總結

背包類型

  1. 01背包
    有限個種類數的物品,每個只有一個,裝在有限個單一背包里
    一維數組基本上都是外層背包內層物品,外層循環從前到后遍歷,內層循環從后向前遍歷,以防重復計算
    對應題目:
    等和分割子串
    最后一塊石頭的重量 II
    目標和
    一和零:這道題是二維的問題,有點抽象
  2. 完全背包
    有限個種類數的物品,每個有無數個,裝在有限個單一背包里
    組合問題一般外層循環是物品,遍歷順序從前到后;內層循環是背包,遍歷順序從前到后
    排列問題一般外層循環是背包,遍歷順序從前到后;內層循環是物品,遍歷順序從前到后
    對應題目:
    組合問題:零錢兌換II
    排列問題:組合總和 Ⅳ、爬樓梯、零錢兌換、完全平方數、??單詞拆分:這道題看不太出可以用動態規劃,但是把字符串長度看成背包,字符串內單詞看成物品,也可以用動態規劃方法來解決,因為我們最后想得到的結果只是一個bool值,內部單詞順序不同對答案有影響,所以是個排列問題
  3. 多重背包
    有限個種類數的物品,每個有多個,裝在有限個單一背包里
    其實把它轉化為01背包就好了。
    如下圖的要求:
    在這里插入圖片描述
    轉化為01背包則為:
    在這里插入圖片描述

遞推公式

問能否能裝滿背包(或者最多裝多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);,對應題目如下:
等和分割子串
最后一塊石頭的重量 II
問裝滿背包有幾種方法:dp[j] += dp[j - nums[i]] ,對應題目如下:
零錢兌換II
目標和
組合總和 Ⅳ
爬樓梯
問背包裝滿最大價值:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); ,對應題目如下:
一和零
問裝滿背包所有物品的最小個數:dp[j] = min(dp[j - coins[i]] + 1, dp[j]); ,對應題目如下:
零錢兌換
完全平方數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161925.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161925.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161925.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【bug】uniapp的image組件渲染gif圖,只有第一次點擊的時候有動效,需要每次點擊都有gif效果,已解決

前兩天遇到的問題&#xff0c;暫時沒有解決&#xff0c;就擱置了。 不解決又難受&#xff0c;還好今天解決了&#xff0c;記錄下 需求&#xff1a; 兩個gif圖&#xff0c;分別代表點擊之后的男生和女生&#xff0c;并且有兩個靜態的男生和女生圖片 當男生靜態圖被點擊的時候切…

關于ElectronVue3中集成訊飛星火AI

前言&#xff1a;我的最終目的是為了在QQ上集成一個AI機器人&#xff0c;因此在這里先實現一個簡單的集成 先上效果圖 總體還是很簡單的&#xff0c;我在調用websock獲取回復內容的基礎上另外集成了一個事件總線&#xff0c;讓我們在調用獲取消息的時候能夠更加方便快捷 工具代…

聯想拯救者Lenovo Legion R9000K 2021H(82N6)原裝出廠Windows10/Win11系統ISO鏡像

鏈接&#xff1a;https://pan.baidu.com/s/13NkeCXNdV0Ib5eeRnZUeAQ?pwdnlr7 提取碼&#xff1a;nlr7 拯救者筆記本電腦原廠WIN系統自帶所有驅動、出廠主題壁紙、系統屬性專屬LOGO標志、Office辦公軟件、聯想電腦管家等預裝程序 所需要工具&#xff1a;16G或以上的U盤 文…

啟發式搜索算法-人工智能

第1關:評估函數和啟發信息 第2關:A*搜索算法 class Array2D:"""說明:1.構造方法需要兩個參數,即二維數組的 寬和高2.成員變量w和h是二維數組的寬和高3.使用:‘對象[x][y]’可以直接取到相應的值4.數組的默認值都是0"""def __init__(s…

使用PySpark 結合Apache SystemDS 進行信號處理分析 (離散傅立葉變換)的簡單例子

文章大綱 簡介 :什么是 SystemDS ?環境搭建與數據 準備數據預處理模型訓練 與 結果評估參考文獻簡介 :什么是 SystemDS ? SystemDS is an open source ML system for the end-to-end data science lifecycle from data integration, cleaning, and feature engineering, ov…

干貨分享丨客戶旅程管理的框架與案例

融合煥新&#xff0c;數字化轉型打造客戶經營新旅程。本文圍繞該主題詳細描述了客戶旅程管理的框架&#xff0c;并通過實踐案例進一步驗證客戶旅程管理的價值。 以下內容根據行業知名企業專家劉勝強的分享整理&#xff0c;完整版內容請點擊文末“閱讀原文”觀看哦~ 一、客戶時代…

【libGDX】使用Mesh繪制矩形

1 前言 使用Mesh繪制三角形 中介紹了繪制三角形的方法&#xff0c;本文將介紹繪制正方形的方法。 libGDX 以點、線段、三角形為圖元&#xff0c;沒有提供繪制矩形內部的接口。要繪制矩形內部&#xff0c;必須通過三角形拼接而成&#xff0c;如下圖&#xff0c;是通過GL_TRIANGL…

基于JavaWeb+SSM+Vue家庭記賬本微信小程序系統的設計和實現

基于JavaWebSSMVue家庭記賬本微信小程序系統的設計和實現 源碼獲取入口前言主要技術系統設計功能截圖Lun文目錄訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 前言 1.1選題背景 互聯網是人類的基本需求&#xff0c;特別是在現代社會&#xff0c;個人…

看不慣AI版權作品被白嫖!Stability AI副總裁選擇了辭職,曾領導開發Stable Audio

近日&#xff0c;OpenAI的各種大瓜真是讓人吃麻了。 而就在Sam Altmam被開除前兩天&#xff0c;可能沒太多人注意到Stability AI副總裁Newton—Rex因看不慣StabilityAI在版權保護上的行為選擇辭職一事。 大模型研究測試傳送門 GPT-4傳送門&#xff08;免墻&#xff0c;可直接…

SPASS-聚類和判別分析

聚類與判別分析概述 基本概念 聚類分析 聚類分析的基本思想是找出一些能夠度量樣本或指標之間相似程度的統計量&#xff0c;以這些統計量為劃分類型的依據&#xff0c;把一些相似程度較大的樣本&#xff08;或指標&#xff09;聚合為一類&#xff0c;把另外一些彼此之間相似程…

C++那些事之string那些事

C那些事之string那些事 C11C17C20C23結論 當我們使用C時&#xff0c;庫的基礎知識比較熟悉&#xff0c;尤其是在C中創建字符串時使用的std::string。這無疑是對舊的C風格“字符串”&#xff08;使用以空字符結尾的字符數組&#xff09;的一種改進。然而&#xff0c;C標準庫在C1…

【Hello Go】Go語言網絡編程

Go語言網絡編程 Go語言程序服務端客戶端 Http程序 有關網絡的基本知識我之前的博客介紹的很詳細 這里就不再贅述了 這里主要講解下Go語言網絡編程的語法 網絡基礎 協議 Go語言程序 我們建立一個tcp鏈接的步驟為 socket bind listen accept 但是在Go語言中 我們并不需要前兩…

office word 使用筆記

office word 使用筆記 1. 功能1.1 格式快捷鍵1.2 復選框 2 遇到過的問題2.1 表格標題和表格距離過大 1. 功能 1.1 格式快捷鍵 復制格式&#xff1a;ctrl shift c 粘貼格式&#xff1a;ctrl shift v 1.2 復選框 方框位置和類型&#xff1a;“插入——高級符號——字體”選…

【追求卓越08】算法--排序算法

引導 今天開始介紹我們在工作中經常遇到的算法--排序。排序算法有很多&#xff0c;我們主要介紹以下幾種&#xff1a; 冒泡排序 插入排序 選擇排序 歸并排序 快速排序 計數排序 基數排序 桶排序 我們需要了解每一種算法的定義以及實現方式&#xff0c;并且掌握如何評…

LeetCode [簡單] 1. 兩數之和

給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數&#xff0c;并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元素在答案里不能重復出現。 你可以按任意順序返回…

Leetcode——121 買賣股票的最佳時機

(超時。。。。。。&#xff09;除了暴力法我是真的。。。。。。 class Solution {public int maxProfit(int[] prices) {int len prices.length;int max0;for(int i0;i<len-1;i){for(int ji1;j<len;j){int income prices[j] - prices[i];if(income>max){maxincome;…

閃存組織結構概念

文章目錄 一、幾種不同類型閃存的參數&#xff1a;二、組織結構三、塊&#xff08;Block&#xff09;的結構擦除動作原理&#xff1a;寫操作讀操作 一、幾種不同類型閃存的參數&#xff1a; 參數項SLCMLCTLCQLC讀取時間/us20~2555~11075~170120~200寫入時間/us50~100400~15008…

Android設計模式--模板方法模式

一&#xff0c;定義 定義一個操作中的算法的框架&#xff0c;而將一些步驟延遲到子類中&#xff0c;使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 在面向對象的開發過程中&#xff0c;通常會遇到這樣一個問題&#xff0c;我們知道一個算法所需的關鍵步…

MR導游情景英語虛擬仿真實訓系統應用

MR導游情景英語虛擬仿真實訓系統應運而生。系統旨在為學生提供一種全新的培訓方式。 系統采用先進的MR混合現實技術&#xff0c;通過虛擬現實技術創建逼真的旅游場景&#xff0c;讓學生能夠身臨其境地體驗各種旅游活動。學生可以在系統中扮演導游的角色&#xff0c;與其他同學…

docker報錯standard init linux.go:228 exec user process caused: exec format error

1、報錯 使用Dockerfile自己做的服務鏡像&#xff0c;docker run時啟動失敗&#xff0c;報錯如下&#xff1a; standard init linux.go:228 exec user process caused: exec format error2、原因一 當前服務器的CPU架構和構建鏡像時的CPU架構不兼容。比如做鏡像是在arm機器下…