//在无重复元素的情况下,有重复元素,点击查看
#include<iostream>
using namespace std;
#define n 4
char a[]={'a','b','c','d'};
int cot=0;
void exchange(char &a,char &b){
char t=a;
a=b;
b=t;
}
void f(int index){//num是求几个的全排列,p是,并且输出
if(index==n){
cout<<a<<endl;
cot++;
return ;
}
for(int i=index;i<n;i++){
exchange(a[index],a[i]);
f(index+1);
exchange(a[index],a[i]);
}
}
int main()
{
f(0);
cout<<cot;
return 0;
}
如求a,b,c,d的全排列,那么for循环中i指向当前考虑的位置,把index及index之后的每一个位置都与index的内容互换。
求完之后再换回来,接着进行下一个递归操作。