給定乙個非空字串 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測試...