目录调整
This commit is contained in:
31
00lanqiao chap/test99-3-2.cpp
Normal file
31
00lanqiao chap/test99-3-2.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
const int N = 1e2 + 10; // 定义最大数组大小
|
||||
int a[N]; // 存储排列结果
|
||||
bool vis[N]; // 标记数字是否被访问过
|
||||
int n; // 排列的大小
|
||||
|
||||
// 回溯函数,dep表示当前处理到第几个数字
|
||||
void dfs(int dep) {
|
||||
if (dep == n + 1) { // 如果已经处理完所有数字
|
||||
for (int i = 1; i <= n; i++) { // 输出排列
|
||||
cout << a[i] << " \n"[i==n];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 1; i <= n; i++) { // 尝试将1到n的每个数字放入当前位置
|
||||
if (vis[i]) continue; // 如果该数字已经被使用,跳过
|
||||
vis[i] = true; // 标记该数字为已使用
|
||||
a[dep] = i; // 将数字放入当前位置
|
||||
dfs(dep + 1); // 递归处理下一个位置
|
||||
vis[i] = false; // 回溯,恢复状态
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
cin >> n; // 输入排列的大小
|
||||
dfs(1); // 从第一个位置开始递归
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user