題目:輸入一個字符串,打印出該字符串中字符的全部排列。例如輸入字符串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