这一题明显的全排列啊!
dfs!dfs!dfs!重要的事情说三遍!
#include <bits/stdc++.h>
using namespace std;
int n, a[16];
bool f[16];
void dfs(int k) {
if (k > n) {
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
cout << endl;
return ;
}//如果已经全部填好,就输出
for (int i = 1; i <= n; i++) {
if (f[i] == 0) {//如果数没有被填
f[i] = 1;//标记填入
a[k] = i;//填数
dfs(k + 1);//递归下一层
f[i] = 0;//反回状态
}
}
}
int main() {
cin >> n;//输入
dfs(1);//开始递归
return 0;
}