#include <iostream> #include <algorithm> using namespace std; int c = 0; int finish(char list[],int k,int i) {//第i个元素是否在前面元素[k...i-1]中出现过 if(i>k) { for(int j=k;j<i;j++) if(list[j]==list[i]) return 0; } return 1; } template<typename T> void Perm(T arr[],int k,int m){ if(k==m){ c++; for(int i=0;i<=m;i++){ cout<<arr[i]; } cout<<endl; } else{ for(int i=k;i<=m;i++){ if(finish(arr,k,i)){ swap(arr[k],arr[i]); Perm(arr,k+1,m); swap(arr[k],arr[i]); } } } } int main() { char arr[4]={'a','c','c','a'}; Perm(arr,0,3); cout<<c; return 0; }