#include<iostream>
#include<deque>
#include<string>
using namespace std;
void print_sub(char* str,int N,deque<char> &result){
if(str==NULL){
return;
}
if(N==0){
deque<char>::iterator iter = result.begin();
for(;iter!=result.end();iter++){
cout<<*iter;
}
cout<<endl;
return;
}
if(*str == '\0'){
return;
}
result.push_back(*str);
print_sub(str+1,N-1,result);
result.pop_back();
print_sub(str+1,N,result);
}
void print(char* str , int N){
int length = strlen(str);
if(str == NULL || N>length){
return;
}
deque<char> result;
print_sub(str,N,result);
}
int main(){
char *str = "abcd";
print(str,1);
system("pause");
return 0;
}
输入n个字符,则这n个字符能够成长度为1的组合、2的组合、……长度为n的组合。在求n个字符长度为m的组合的时候,把这个字符n分成两部分:第一个字符和其余的字符里选取m-1个字符;如果组合里面不包含第一个字符,则下一步在剩余的n-1个字符里选取m个字符。
剑指offer面试题28扩展提————字符串的组合
最新推荐文章于 2019-02-17 21:32:44 发布