#include<string>
#include<iostream>
#include<map>
#include<vector>
using namespace std;
bool findret(string str,int start,vector<string> p,map<string,int> mp){
if(start==str.size()) return true;
bool flag=false;
for(int i=start;i<str.size();i++){
string path;
if(mp.count(str.substr(i,i-start+1)) && findret(str,i+1,p,mp)){
path=str.substr(i,i-start+1)+' '+path;
flag=true;
}
}
return flag;
}
int main(){
string str="tencent";
vector<string> dic={""};
map<string,int> mp;
vector<string> ret;
for(string s:dic){
if(!mp.count(s)){
mp[s]=1;
}
}
for(int i=0;i<str.size();i++){
vector<string> p;
if(mp.count(str.substr(0,i+1)) && findret(str,i+1,p,mp)){
for(int i=0;i<p.size();i++){
string path=str.substr(0,i+1)+' '+p[i];
ret.push_back(path);
}
}
}
for(int i=0;i<ret.size()-1;i++){
cout<<ret[i];
}
cout<<ret[ret.size()-1];
return 0;
}
全部评论
(0) 回帖