#include<bits/stdc++.h>
using namespace std;
int A[20],vis[20];
int n;
//生成1到n的全排
void dfs(int cur){
if(cur == n){
for(int i=0;i<n;i++) printf("%d ",A[i]);
printf("\n");
}else for(int i=1;i<=n;i++){
if(!vis[i]){
A[cur] = i //从1到n里面取数
vis[i] = 1; //标识为1的是用过的
dfs(cur + 1); //从下一个开始搜索
vis[i] = 0; //标识为0的是没用过的
}
}
}
int main(){
scanf("%d",&n);//输入n
vis[0] = 1;
dfs(0);
return 0;
}
生成1-n全排(C++容易理解)
于 2022-01-12 19:25:30 首次发布