描述
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案数。
例如:
输入:“aab”
输出:2
2种方案数是[“a”,“a”,“b”]和[“aa”,“b”]
输入描述
一个字符串 s,1 <= s的长度 <= 10
输出描述
s 所有可能的分割方案数。
用例输入 1
aab
用例输出 1
2
用例输入 2
a
用例输出 2
1
可以使用拼接的方式。
#include <bits/stdc++.h>
using namespace std;
string a;
int cnt;
bool hwc(string ss){
for(int i=0;i<ss.length()/2;i++){
if(ss[i]!=ss[ss.length()-i-1])return false;
}
return true;
}//判断回文
void dfs(int sum){
if(sum==a.length()){//出口条件
cnt++;
return;
}
string ss;
for(int i=sum;i<a.length();i++){
ss+=a[i];//拼接
if(hwc(ss)){
dfs(i+1);//继续深搜
}
}
}
int main(){
cin>>a;
dfs(0);
cout<<cnt;
return 0;
}