输入n,字典序输出1~n的全排列。 n>=1, n<=9
例如:n=3
输出:
123
132
213
231
312
321
#include <iostream>
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;
}