#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) 回帖