AcWing 94. 递归实现排列型枚举
原题链接
简单
作者:
scl
,
2020-02-14 21:37:01
,
所有人可见
,
阅读 3
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int m;
const int maxn = 10;
bool used[maxn];//检查每个数字是否被用过, false表示没被用过,true表示用过了
int st[maxn];//0表示还没存放数字 1~m表示已经存放,存放的是谁
void dfs(int n)
{
if(n > m)
{
for(int i = 1; i <= m; i++)
printf("%d ", st[i]);
puts("");
return;
}
for(int i = 1; i <= m; i++)
if(!used[i]){
st[n] = i;
used[i] = true;
dfs(n + 1);
//恢复现场
st[n] = 0;
used[i] = false;
}
}
int main()
{
scanf("%d", &m);
dfs(1);
return 0;
}