用下标判断一下 和之前的组合方法差不多
class Solution:
def wordBreak(self, s: str, wordDict: List[str]) -> bool:
dp=[False]*(len(s)+1)
dp[0]=True
for j in range(1,len(s)+1):
for word in wordDict:
if j>=len(word):
dp[j]=dp[j] or (dp[j-len(word)] and word == s[j-len(word):j])
return dp[-1]
多重背包问题:把1s 改成 11 12 13 全展开变成01背包问题
背包问题总结:
列dp表
01背包先物体后容量 从后往前
完全背包从前往后
排列问题先容量后物体 组合问题先物体后容量
注意起始坐标和终止坐标