输入一个字符串,打印出该字符串中字符的所有排列。
例如:输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串如下:
abc,acb,bac,bca,cab,cba
我们解题的思路如下:将问题化成一些很小的子问题:
代码实现:
#include<iostream>
using namespace std;
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;
}
}
}
void Permutation(char* Str)
{
if (Str == NULL)
{
return;
}
Permutation(Str, Str);
}