AcWing 842. 排列数字
原题链接
简单
作者:
跟着灿哥学切菜
,
2021-01-16 20:36:02
,
所有人可见
,
阅读 264
#include <iostream>
using namespace std;
const int N = 10;
int path[N];
bool st[N];
int n;
void dfs(int u) {
if (u == n) {
for (int i = 0; i < n; i ++) printf("%d ", path[i]);
puts("");
return;
}
for (int i = 1; i <= n; i ++) {
if(!st[i]) {
path[u] = i;
st[i] = true;
dfs(u + 1);
//此时为什么要在for 循环当中进行回溯,就是是在for循环中找到的数,
//此时就是从这个数往下的, 所以此时回溯也要从这个位置上恢复
path[u] = 0;
st[i] = false;
}
}
}
int main() {
scanf("%d", &n);
dfs(0);
return 0;
}