题目描述
输出自然数1~n所有不重复的排列,即n的全排列,要求所产生的任一数字序列不允许出现重复的数字。
输入
一个正整数(1<=n<=9)
输出
由1~n组成的所有不重复的数字序列,每行一个序列。
样例输入
3
样例输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
这题只要用个DFS就完事了,上代码:
#include<bits/stdc++.h>//万能头
using namespace std;
int n;
int vis[10];
int ans[10];
void dfs(int step){//使用DFS
if(step==n){
for(int i=0;i<n;i++){
cout<<ans[i]<<' ';//输出
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
ans[step]=i;
vis[i]=1;
dfs(step+1);
vis[i]=0;
}
}
}
int main(){
cin>>n;//输入
dfs(0);//调用DFS
return 0;//完美结束
}
有哪位大佬有更简便的方法,欢迎私信!