目录
题目描述
输入描述
输出描述
解析
完整代码
描述
从键盘读入一个整数n(n<=6),请输出1~n中所有整数的全排列,按照由小到大输出结果,每组的n个数之间用空格隔开。
全排列的含义:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
如当n=3时,全排列的结果为:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
输入描述
一个整数n(n >= 1 && n <= 6)
输出描述
1~n中所有数的全排列的结果,按照由小到大输出,每行n个数
用例输入 1
3
用例输出 1
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 path[10],n,flag[10],sum;
void dfs(int step){
if(step==n+1){
for(int i=1;i<n;i++)cout<<path[i]<<" ";
cout<<path[n];
sum++;
cout<<endl;
return ;
}
for(int i=1;i<=n;i++){
if(flag[i]==0){
flag[i]=1;
path[step]=i;
dfs(step+1);
flag[i]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}
1362

被折叠的 条评论
为什么被折叠?



