要求:如题
思路:回溯,可以记录f[i][j]是否回文来加速,也可以先动归记录好
class Solution {
public:
vector<vector<string>> v;
vector<string> tmp;
bool judge(string &s){
string t=s;
reverse(s.begin(),s.end());
return s+t==t+s;
}
void dfs(string &s,int start){
if(start==s.size())v.push_back(tmp);
for(int len=1;start+len-1<s.size();++len){
string st=s.substr(start,len);
if(judge(st)){
tmp.push_back(st);
dfs(s,start+len);
tmp.pop_back();
}
}
}
vector<vector<string>> partition(string s) {
dfs(s,0);
return v;
}
};