class Solution {
public:
vector<string>res;
vector<string>temp;
vector<bool>*dp;
vector<string> wordBreak(string s,unordered_set<string>&dict)
{
dp=new vector<bool>[s.size()];
for(int i=0;i<s.size();i++)
for(int j=i;j<s.size();j++)
{
dp[i].push_back(ismatched(s.substr(i,j-i+1),dict));
}
output(s.size()-1,s);
return res;
}
void output(int len,string s)
{
if(len==-1)
{
string stores;
for(int i=temp.size()-1;i>=0;i--)
{
stores=stores+temp[i];
if(i!=0)
stores.push_back(' ');
}
res.push_back(stores);
}
else
{
for(int i=0;i<=len;i++)
{
if(dp[i][len-i])
{
temp.push_back(s.substr(i,len-i+1));
output(i-1,s);
temp.pop_back();
}
}
}
}
bool ismatched(string s,unordered_set<string>&dict)
{
unordered_set<string>::const_iterator get=dict.find(s);
if(get!=dict.end())
return true;
return false;
}
};
二位vector的容量不会定义