排列
void permutation(char* str) {
if (str == nullptr)
return;
_Permutation(str, str);
}
void _Permutation(char* str, char *begin) {
if (*begin == '\0')
printf("%s\n", str);
else {
for (char* ch = begin; *ch != '\0'; ++ch) {
char tmp = *ch;
*ch = *begin;
*begin = tmp;
_Permutation(str, begin + 1);
tmp = *ch;
*ch = *begin;
*begin = tmp;
}
}
}
- 輸入:
abc
- 輸出:
組合
void Combination(char* str) {
size_t len = strlen(str);
for (int i = 1; i < (1 << len); ++i) {
for (int j = 0; j < len; ++j) {
if (i & (1 << j))
cout << str[j];
}
cout << endl;
}
}
- 輸入:
123
- 輸出: