目录
描述
有 1∼n 这 n(n<10)个数,现将这 n 个数组成一个 n 位的数,每个数只能用一次,例如 n=2,则 12,21等都是符合条件的数,但 11 和 22 不行。问,输入 n 后,将符合条件的所有的 n 位数输出,且按照从小到大顺序输出。
输入描述
一个正整数 n。
输出描述
按从小到大输出所有的全排列数,每行一个数(中间用空格隔开)
样例
输入
2
输出
1 2 2 1
代码
#include <iostream>
using namespace std;
int n;
int arr[11],vis[11];
void f(int s){
if(s>n){
for(int i=1;i<=n;i++)cout<<arr[i]<<' ';
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
vis[i]=1;
arr[s]=i;
f(s+1);
vis[i]=0;
}
}
}
int main(){
cin>>n;
f(1);
return 0;
}