C++:
#include <bits/stdc++.h>
using namespace std;
int n, a[100011];
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i ++ ) a[i] = i;
do
{
for (int i = 1; i <= n; i ++ )
cout << a[i] << (i == n ? '\n' : ' ');
} while(next_permutation(a + 1, a + 1 + n));
return 0;
}
C(根据y总代码改写):
#include <stdio.h>
int n, d[110];
void dfs(int u, int state)
{
if (u == n)
{
for (int i = 0; i < n; i ++ ) printf("%d ", d[i]);
putchar('\n');
return;
}
for (int i = 0; i < n; i ++ )
if (!(state >> i & 1))
{
d[u] = i + 1;
dfs(u + 1, state + (1 << i));
}
}
int main()
{
scanf("%d", &n);
dfs(0, 0);
return 0;
}
Python:
d = []
st = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
n = int(input())
def dfs(a):
global n
if a == n:
for i in range(n):
print(f"{d[i]}",end = ' ')
print()
return 0
for i in range(n):
if st[i + 1] == 0:
d[a] = i + 1
st[i + 1] = 1
dfs(a + 1)
st[i + 1] = 0
dfs(0)