一、题目
二、代码
class Solution
{
public:
//完全背包 字符串是背包 字典里的元素是物品
//组合
bool wordBreak(string s, vector<string>& wordDict)
{
int i,j;
bool return_bool=0;
s.insert(0,"a"); //这一步处理 让s有效字符分布在1-结尾
// std::cout<<"s " <<s<<std::endl;
vector<bool> dp(s.size(),0);
dp[0]=1;
for(i=0;i<=s.size()-1;i++)
{
for(j=0;j<wordDict.size();j++)
{
if(i>=wordDict[j].size())
{
string temp_string=s.substr(1,i);
string process_string=s.substr(i-wordDict[j].size()+1,wordDict[j].size());
if(dp[i-wordDict[j].size()]==1&&wordDict[j].compare(process_string)==0)
{
dp[i]=1;
// std::cout<<"成功 "<<std::endl;
// std::cout<<"i "<<i <<std::endl;
// std::cout<<"temp_string "<<temp_string <<std::endl;
// std::cout<<"process_string "<<process_string <<std::endl;
}
}
}
}
return_bool=dp[s.size()-1];
return return_bool;
}
};