【思路】
以下用详细样例来阐述这样的实现的思路,比如实现123的全排列组合。
要求123的全排列,能够分为以下情况: 情况1:第0位为1+23的全排列 情况2:第0位为2+13的全排列 情况3:第0位为3+32的全排列 上面的情况用代码实现例如以下://情况1//为了跟以下一致,加上swap(list[0],list[0]);perm(list,1,2);//为了跟以下一致,加上swap(list[0],list[0]);//情况2swap(list[0],list[1]);perm(list,1,2);swap(list[0],list[1]);//情况3swap(list[0],list[2]);perm(list,1,2);swap(list[0],list[2]);
这3种情况能够用循坏取代:
for(int i=0;i<=2;i++){ swap(list[0],list[i]); perm(list,1,2); swap(list[0],list[i]);}
【全排列实现代码一】
#includeusing namespace std;void perm(char list[],int k,int m);void perm(char list[],int k,int m){ if(k==m) { for(int j=0;j<=m;j++) { cout<