對abc三個字元進行全排列的結果是abc,acb,bac,bca,cab,cba。一種實現思路可以描述如下:step1,確定第一位的字元,可以是a,b或者c。step2,第一個字元確定之後,對剩餘的字元求全排列。
C++實現如下:
void Permutation(char* chars,char* begin) { if(*begin=='\0') { cout << chars << endl; return; } for(char* p=begin;*p!='\0';p++) { int temp=*p; //第一位字元可以是,a,b或者c。通過交換實現。 *p=*begin; *begin=temp; Permutation(chars,begin+1); //對其餘字元求全排列。 temp=*p; //復原 *p=*begin; *begin=temp; } }
注意最後的程式碼,這三行程式碼把一次排列之後的結果恢復到排列前。