用递归的思想:先输出以1开头的排列,然后以2开头的排列,以此往下,一直到n
#include<iostream>
using namespace std;
void per(int *a,int n,int cur){
if(cur==n){ //0时无输出
for(int i=0;i<n;i++)
cout<<a[i];
cout<<endl;
}
else {
for(int j=1;j<=n;j++){ //填数
int ok=1;
for(int k=0;k<cur;k++){
if(a[k]==j){ //出现过,则不能再选
ok=0;
}
}
if(ok){
a[cur]=j;
per(a,n,cur+1);
}
}
}
}
int main(){
int n;
cin>>n;
int *a=new int[n];
per(a,n,0);
}
输入
3
输出
123
132
213
231
312
321