本题实现的是输入一个数实现从一到这个数的全排列,也是基础的dfs问题。c++可以直接调用一个函数实现感觉还是自己理解最好。
#include<bits/stdc++.h>
using namespace std;
int a[101],b[101],n;//a[101]数组里面保存的是序列,b[101]是标记数组
void prin()
{
int i;
for(i=1;i<=n;i++)
printf("%5d",a[i]);
cout<<endl;
}
void dfs(int x)
{
int i;
for(i=1;i<=n;i++)
if(!b[i])
{
a[x]=i;//把i保存到第x个数
b[i]=1;//标记为已用过
if(x==n) prin();
else
dfs(x+1);
b[i]=0;//回溯
}
}
int main()
{
cin>>n;
dfs(1);
return 0;
}