与此题很像https://blog.csdn.net/nnnnzhlll/article/details/123165403
最主要的还是一个check函数看它有没有被选择过
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int vis[10010];
int n;
int a[10010];
int check[10010];
void dfs(int k)
{
int i;
if(k>n)
{
for(i=1;i<=n;i++)
{
printf("%5d",a[i]);
}
printf("\n");
return ;
}
for(i=1;i<=n;i++)
{
if(check[i]==0)
{
a[k]=i;
check[i]=1;
dfs(k+1);
check[i]=0;
}
}
}
int main()
{
scanf("%d",&n);
dfs(1);
}