AcWing 823. 排列
原题链接
简单
作者:
Saber__
,
2024-10-31 11:42:36
,
所有人可见
,
阅读 3
#include <iostream>
using namespace std;
const int N = 10;
int n;
void dfs(int u, int nums[], bool st[])
{
//枚举完了
if(u > n)
{
for(int i = 1; i <=n; ++i)
cout << nums[i] << " ";
cout << endl;
}
else
{
for(int i = 1; i <=n; ++i) //按字典序遍历数字
{
if(!st[i]) //当这个数字不存在于q[]数组中,可以进入,否则继续遍历
{
st[i] = true;
nums[u] = i; //先将数字进行标记
dfs(u+1,nums, st);
st[i] = false; //当从下一层出来的时候,这个数字也不再被标记
}
}
}
}
int main()
{
cin >> n;
int nums[N];
bool st[N];
dfs(1,nums,st);
return 0;
}