#include <bits/stdc++.h>
using namespace std;
int n;
int a[11];
int b[11];
void dfs(int x) {
if (x > n ) {
for (int i = 1; i <= n; i++) {
printf("%5d", b[i]);
}
cout << endl;
}
for (int i = 1 ; i <= n; i++ ) {
if ( a[i] == 0 ) {
a[i] = 1;
b[x] = i;
dfs( x + 1 );
a[i] = 0;
b[x] = 0;
}
}
return ;
}
int main() {
cin >> n;
dfs(1);
}
水一下全排序,用一个数组维护放进去的数字
x代表选第x个数字,因此如果 x == n + 1 就代表前面的n个数字已经选好,
记得还原啦