A140.数字全排列
2025-08-12 21:47:44
发布于:江苏
0阅读
0回复
0点赞
#include <iostream>
using namespace std;
int n, a[11];//a数组用来记录集合
bool vis[11];//标记一个数是否被访问
//决定第x+1位上的数
void dfs(int x) {
//递归结束
if (x == n) {
//输出集合
for (int i=1; i<=n; i++) {
cout << a[i] << ' ';
}cout << endl;
return;
}
//遍历下一个数
for (int i=1; i<=n; i++) {
if (!vis[i]) {
vis[i] = 1;
a[x+1] = i;
dfs(x+1);
//a[x+1] = 0; 可以省略,因为会被覆盖掉
vis[i] = 0;//为了确保排列的完整性,这一步不能省略
}
}
}
int main() {
cin >> n;
dfs(0);
return 0;
}
这里空空如也
有帮助,赞一个