#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n;
int path[N]; //存放数字
bool st[N]; //数字是否被用过
void dfs(int u) //u表示层数,根节点不算,从第一层开始
{
if(u == n) //递归函数,先写终止条件
{
for(int i = 0; i < n; i++)
printf("%d ", path[i]);
puts("");
}
for(int i = 1; i <= n; i++)
{
if(!st[i]) //数字没用过
{
path[u] = i;
st[i] = true;
dfs(u + 1); //走下一层
st[i] = false;
}
}
}
int main()
{
scanf("%d", &n); //有多少个数字,也表示多少层数
dfs(0); //根节点层数为0
return 0;
}
排列数字(dfs)
最新推荐文章于 2024-07-18 17:40:16 发布