【139.单词拆分】
这个题目是一个背包问题。但是他稍微有点不太一样。在于这题判断能否装满背包是在判断单词是否出现在字典中,如果出现,就代表能装满。
背包是长度为i的字符串
物品是长度为i-j的子串
这就意味着随着i的增加,物品的个数是在变多的,这跟原本的背包问题不一样了。
dp数组的定义:dp[i]长度为i的字符串,能否用字典中出现的单词拼接出来
dp数组初始化:dp[0] = true 其他都为false
dp的递推公式:if(wordSet.find(word) != wordSet.end() && dp[j]) dp[i] = true;这个是dp[i]为真的条件,其他条件dp[i]都不能为真。意思是j到i的字串出现在字典中,且j之前的字串也出现在字典中的时候,i之前的字串才能满足都用字典中的单词拼接出来。