揹包問題 單詞拆分

2021-09-30 00:00:47 字數 1257 閱讀 2134

給定乙個非空字串 s 和乙個包含非空單詞列表的字典 worddict,判定 s 是否可以被空格拆分為乙個或多個在字典**現的單詞。

示例:

示例 1:

輸入: s =

"leetcode"

, worddict =

["leet"

,"code"

]輸出:

true

解釋: 返回 true 因為 "leetcode" 可以被拆分成 "leet code"。

示例 2:

輸入: s =

, worddict =[,

"pen"

]輸出:

true

注意你可以重複使用字典中的單詞。

示例 3:

輸入: s =

"catsandog"

, worddict =

["cats"

,"dog"

,"sand"

,"and"

,"cat"

]輸出:

false

思路一:

利用遞迴的思想,注意學習這種遞迴需要返回值的時候的寫法,非常的關鍵。

class

solution

public

static

boolean

judge

(string s, list

worddict,

int start)

for(

int i = start +

1; i <= s.

length()

; i++)}

return

false;}

}

思路二:

採用動態規劃的思路,就是說字串可以依賴於前面的短一點的字串的狀態。

新建乙個dp陣列,長度為dp[size + 1],dp[i]表示s[0, i]能否由字典中單詞組。並且dp[0] = true,相當於字串與第乙個單詞匹配上。

每一次判斷dp[i]時,需要參考 前乙個單詞索引長度的位置的元素。

如果前面的字串可以組成字典中單詞,到了dp[i]的時候仍然是字典中的單詞那麼dp[i] 就為true

class

solution}}

return dp[size];}

}

0 1揹包問題(不可拆分問題)

假期 2020.01 180 1揹包問題是乙個經典的np hard組合優化問題,現實生活中的很多問題都可以以它為模型。本博文從動態規劃的角度進行問題的分析,分析了0 1揹包問題的數學模型,刻劃了最優解的結構特徵,建立了求最優值的遞迴關係式。0 1揹包問題一般描述為 給定n種物品和乙個揹包。物品i的重...

揹包演算法 拆分

這個演算法得以實現,主要得到 newkid 和 nyfor 兩位大哥的幫助 declare type test t is table of vw money rowtype index by binary integer res test t l row binary integer 1 sums ...

1353 揹包問題(貪心 可拆分)

題目描述 現在有很多物品 它們是可以分割的 我們知道它們每個物品的單位重量的價值v和重量w 1 v,w 100 如果給你乙個揹包它能容納的重量為m 10 m 200 你所要做的就是把物品裝到揹包裡,使揹包裡的物品的價值總和最大。輸入第一行輸入乙個正整數n 1 n 5 表示有n組測試資料 隨後有n測試...