竞赛笔记竞赛C++2024-01-15竞赛笔记Minecraft-Sep2024-01-152024-03-182024/1/15 123456789101112131415161718192021222324252627282930313233//Luogu P1706 全排列问题//By OIWIKI 2024/1/15#include <iomanip>#include <iostream>using namespace std;int n;bool vis[50]; // 访问标记数组int a[50]; // 排列数组,按顺序储存当前搜索结果void dfs(int step) { if (step == n + 1) { // 边界 for (int i = 1; i <= n; i++) { cout << setw(5) << a[i]; // 保留5个场宽 } cout << endl; return; } for (int i = 1; i <= n; i++) { if (vis[i] == 0) { // 判断数字i是否在正在进行的全排列中 vis[i] = 1; a[step] = i; dfs(step + 1); vis[i] = 0; // 这一步不使用该数 置0后允许下一步使用 } } return;}int main() { cin >> n; dfs(1); return 0;} DFS-Deep First Search-深度优先搜索(转)