#include <bits/stdc++.h>
using namespace std;
int n;//设定全局变量
vector<int> path;
vector<bool> st;
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;//枚举过的数字标记为true
dfs(u + 1);
st[i] = false;//重置标记
}
}
}
int main()
{
cin >> n;
path.resize(n); // 初始化path大小为n
st.resize(n + 1, false); // st大小为n+1,索引1~n
dfs(0);
return 0;
}
dfs算法之数字排列(c++)
于 2025-02-16 15:29:51 首次发布