递归的原理和实现方法是很基础的就不再说明了。
直接上题
#include<cstdio>
const int maxn=11;
//P记录当前排列,hash记录x是否在P中
int n,P[maxn],hashTable[maxn]={false};
//当前处理排列的第index位
void Func(int index){
if(index==n+1){//递归边界
for(int i=1;i<=n;i++){
printf("%d",P[i]);
}
printf("\n");
return;
}
for(int x=1;x<=n;x++){
if(hashTable[x]==false){
P[index]=x;
hashTable[x]=true;
Func(index+1);
hashTable[x]=false;//
}
}
}
int main(){
n=3;
Func(1);
return 0;
}
应该可以看懂。。。