思路:根据递归的特性,确定产生的字符组合顺序
例:字符串“abc”的字符组合
产生的顺序为: a、b、c、ab、ac、bc、abc
void Print(vector<char>& v)
{
for (int i = 0; i<v.size(); i++)
{
cout << v[i];
}
cout << endl;
}
void _Combination(char* str, int len, vector<char>&v)
{
if (!str || (*str == '\0'&&len > 0))
return;
if (len == 0)
{
Print(v);
return;
}
v.push_back(*str);
_Combination(str + 1, len - 1, v);
v.pop_back();
_Combination(str + 1, len, v);
}
void ComBination(char* str)
{
vector<char>v;
int len = strlen(str);
for (int i = 1; i <= len; i++)//组合字符的长度
{
_Combination(str, i, v);
}
}