题意:
输入一个字符串,求出该字符串中字母的所有组合!
假设每次组合的字符数长度为m
从n个字符中选取m个字符进行组合
对于每一个字符,都有两种选择,一个是放入结果中,另一个是不放入结果中
如果放入结果中,那么需要从剩下的n-1个字符中选取m-1个字符
否则的话,就从剩下的n-1个字符中选取m个字符,递归下去。。。。
void combination(string str,int restnum,vector<char>& res){
if(restnum==0){
std::vector<char>::iter=res.begin();
while(iter!=res.end()){
cout<<(*iter);
iter++;
}
cout<<endl;
return ;
}
if(str=='\0'){
return;
}
res.push_back(str[0]);
combination(str.substr(1),number-1,res);
res.pop_back();
combination(str.substr(1),number,res);
}
void combination(string str){
if(str==NULL){
return;
}
std::vector<char> res;
for(int i=1;i<=str.size();i++){
combination(str,i,res);
}
}