题目:求字符的所有组合。
代码示例:
#include<iostream>
#include<vector>
#include<cstring>
#include<assert.h>
using namespace std;
void Combination(char *string, int number, vector<char> &result);
void Combination(char *string)
{
assert(string != NULL);
vector<char> result;
int i, length = strlen(string);
for (i = 1; i <= length; ++i)
Combination(string, i, result);
}
void Combination(char *string, int number, vector<char> &result)
{
assert(string != NULL);
if (number == 0)
{
static int num = 1;
cout << "第" << num++ << "个组合:";
vector<char>::iterator iter = result.begin();
for (; iter != result.end(); ++iter)
cout<<*iter;
cout << endl;
return;
}
if (*string == '\0')
return;
result.push_back(*string);
Combination(string + 1, number - 1, result);
result.pop_back();
Combination(string + 1, number, result);
}
int main(void)
{
char str[] = "abc";
Combination(str);
return 0;
}