PTA全排列(回溯,字典序)分数 10作者 c++课程组单位 湖州师范学院对于1~n这n个不同的数,按照一定的顺序把这n个数排列起来(每个数出现一次,且不重复, n<10),将所有的排列列出,
全排列(回溯,字典序)分数 10作者 c++课程组单位 湖州师范学院对于1~n这n个不同的数,按照一定的顺序把这n个数排列起来(每个数出现一次,且不重复, n<10),将所有的排列列出,称为全排列。
·
全排列(回溯,字典序)
分数 10
作者 c++课程组
单位 湖州师范学院
对于1~n这n个不同的数,按照一定的顺序把这n个数排列起来(每个数出现一次,且不重复, n<10),将所有的排列列出,称为全排列。
输入格式:
一个数n。
输出格式:
1~n的全排列,每个排列一行(按字典序输出)。
输入样例:
3
输出样例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10],b[10],vis[10];
void DFS(int step){
if(step==n){
for(int i=0;i<n;i++)cout<<b[i]<<" ";
cout<<endl;
}
else {
for(int i=0;i<n;i++){
if(vis[i]==0){
b[step]=a[i];
vis[i]=1;
DFS(step+1);
vis[i]=0;
}
}
}
}
signed main(){
cin>>n;
for(int i=0;i<n;i++)a[i]=i+1;
DFS(0);
return 0;
}
更多推荐
所有评论(0)