AcWing 823. 排列
原题链接
困难
作者:
XIAOYU617
,
2023-11-12 17:13:01
,
所有人可见
,
阅读 43
因为没有思路,所以去听了一下讲解;
#include <iostream>
using namespace std;
const int N = 10; //定义数组长度;
int n; //为了方便,全局定义一个变量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]) //如果数字未被标记;
{
nums[u] = i; //将数字读入数组;
st[i] = true; //标记;
dfs(u+1,nums,st); //进入下一位;
st[i] = false; //恢复现场;
}
}
}
}
int main()
{
cin >> n;
int nums[N];
bool st[N] = {0};
dfs(1,nums,st); //调用函数;
return 0;
}