题目:输入一个字符串,打印出该字符串中字符的全部排列。例如输入字符串abc,ios
则打印出由字符a,b,c所能排列出来的全部字符串abc,acb,bac,bca,cab和cba.spa
此题的主要步骤由以下几步:code
1.求出全部可能出如今第一个位置的字符blog
2.将第一个字符与后面字符分别交换递归
3.将第一个字符后面的字符递归步骤1,2字符串
代码以下:io
1 #include <iostream> 2 using namespace std; 3 4 void FunOfString(char* Str,char* Begin) 5 { 6 if(!Str||!Begin) 7 { 8 return; 9 } 10 11 if(*Begin=='\0') 12 { 13 cout<<Str<<endl; 14 } 15 else 16 { 17 for(char* ch=Begin;*ch!='\0';ch++) 18 { 19 char temp; 20 temp=*ch; 21 *ch=*Begin; 22 *Begin=temp; 23 24 FunOfString(Str,Begin+1); 25 26 temp=*ch; 27 *ch=*Begin; 28 *Begin=temp; 29 } 30 } 31 } 32 33 int main() 34 { 35 char Str[]="vpoet"; 36 FunOfString(Str,Str); 37 system("pause"); 38 return 0; 39 }
运行截图:class