题目
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。
解析
我们可以把字符串看成由两个部分组成:第一部分为它的第一个字符,第二部分为后面的所有字符。如此就可以递归。
当然递归的时候一定不要忘了回溯。
结果
代码
#include<iostream>
using namespace std;
void Permutation(char* s,char* begin){
if(*begin=='\0')
cout<<s<<endl;
else
{
for(char* p=begin;*p!='\0';p++)
{
char temp=*p;
*p=*begin;
*begin=temp;
Permutation(s,begin+1);
//此处回溯
temp=*p;
*p=*begin;
*begin=temp;
}
}
}
int main()
{
char c[100];
cin>>c;
cout<<"结果:"<<endl;
Permutation(c,c);
return 0;
}