题目描述
按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
题目限制
输入格式
一个整数 n。
输出格式
由 1∼n 组成的所有不重复的数字序列,每行一个序列。
每个数字保留 5 个场宽。
输入输出样例
解题思路
本题要求全排列,是一个简单的dfs问题,具体看代码
AC代码
#include <bits/stdc++.h>
using namespace std;
int n,f=0;
int num[10],v[10];
void dfs(int step);
int main()
{
cin>>n;
memset(v,0,sizeof(v));
dfs(1);
return 0;
}
void dfs(int step)
{
if(step==n+1)
{
f++;
if(f!=1)
printf("\n");
for(int i=1;i<=n;i++)
{
printf("%5d",num[i]);
}
return ;
}
for(int i=1;i<=n;i++)
{
if(v[i]==0)
{
v[i]=1;
num[step]=i;
dfs(step+1);
v[i]=0;
}
}
}