跳到正文
信奥逐课

第 231 课

排列搜索

🔵 基础 约 7 分钟

一句话理解

排列搜索:每个位置选一个还没用过的数。

为什么要学

n 全排列、旅行顺序。

讲解

used 数组标记数字是否已用。深度到达 n 记录方案。复杂度 n!。

例子

void dfs(int d) {
    if (d == n) { save(); return; }
    for (int i = 1; i <= n; i++) if (!used[i]) {
        used[i] = 1; a[d] = i;
        dfs(d + 1);
        used[i] = 0;
    }
}

第 d 位尝试所有未用数字。

常见错误

练习 做完再看下一课

排列搜索复杂度量级?

在线练习 C++ 在浏览器里编译,代码不会上传

Ctrl / ⌘ + Enter 运行 · Tab 缩进

输出
 

进度保存在本机浏览器里。

左右方向键也可翻课