题目描述
全排列
算法1
(递归+回溯)
时间复杂度
参考文献
C++ 代码
#include <iostream>
using namespace std;
const int N = 1010;
int n;
bool st[N];
int path[N];
void Dfs(int u) {
if(u == n) {
for(int i = 0; i < n; i ++) {
cout << path[i] << " ";
}
cout << endl;
return;
}
for(int i = 1; i <= n; i++) {
if(!st[i]) {
path[u] = i; //存储结点
st[i] = true;//存完本轮不能再用了
Dfs(u + 1);
st[i] = false; //记得恢复现场
}
}
}
int main() {
cin >> n;
Dfs(0);
return 0;
}