--------------------------------------------------------------
void perm (char c[], int k, int n)
{ // 產生c[k],...,c[n-1] 的所有排列
if (k == n-1) //終結條件成立時輸出此項排列
{ for (int i = 0; i < n; i++)
cout << c[i] <<" ";
cout << endl;
}
else // 讓c[k]固定不動,求perm(c[], k+1, n)
{ for (i=k; i<n; i++)//讓c[k]~c[n-1]輪流當c[k]
{ char temp=c[k]; c[k]=c[i]; c[i]=temp;
perm(c,k+1,n);
//產生a[k+1],…,a[n-1]的所有排列
temp=c[k]; c[k]=c[i]; c[i]=temp;
//還原原字元順序
}
}
}