#include <iostream>
void swap(char* x, char* y)
{
char tmp;
tmp = *x;
*x = *y;
*y = tmp;
};
void permute(char* str, int beginIdx, int endIdx)
{
if(beginIdx == endIdx)
{
printf("%s\n", str);
}
else
{
for(int i = beginIdx; i <= endIdx; i++)
{
swap(str + beginIdx, str + i);
permute(str, beginIdx + 1, endIdx);
swap(str + beginIdx, str + i);
}
}
};
void generate_permutations(const char* input_string)
{
int len = strlen(input_string);
char str[100];
strcpy(str, input_string);
permute(str, 0, len - 1);
};
int main()
{
generate_permutations("cat");
return 0;
}