输入n,字典序输出1~n的全排列。
123
132
213
231
312
321
#include <bits/stdc++.h>
using namespace std;
int n;
int a[10];
bool vis[10];
void dfs(int w)
{
if(w==n) //第n位 即之前已赋值
{
for(int i=0; i<n; i++)
cout<<a[i];
cout<<endl;
}
for(int i=1; i<=n; i++)
if(!vis[i]) //i未使用过
{
a[w]=i;
vis[i]=1; //标记为使用过
dfs(w+1); //填充下一位
vis[i]=0; //完成后 w位为i++ i还原为未标记
}
}
int main()
{
cin>>n;
dfs(0); //从第0位开始遍历
return 0;
}