题目:
本题与 POJ - 1416 L - Shredding Company 类似
代码:
class Solution {
public:
vector<vector<string>> ans; //答案
vector<string> temp; //过程
int len; //s的len
bool is(string s,int l,int r) //判断是否为回文
{
while(l<r)
{
if(s[l]!=s[r]) return 0;
r--,l++;
}
return 1;
}
void dfs(int pos,string s)
{
if(pos==len) //len下标不存在,已遍历完
{
ans.push_back(temp); //加入ans中
return;
}
for(int i=pos;i<len;i++)
{
if(is(s,pos,i)) //是回文
{
temp.push_back(s.substr(pos,i-pos+1)); //加入[pos,i]
dfs(i+1,s); //pos+1继续dfs
temp.pop_back(); //回溯
}
}
}
vector<vector<string>> partition(string s) {
len=s.size();
dfs(0,s);
return ans;
}
};