跳到正文
信奥逐课

第 331 课

O(n²) LIS

🟠 进阶 约 10 分钟

一句话理解

O(n²) LIS:两层循环。

为什么要学

n≤3000 可用。

讲解

枚举 i,再枚举前面的 j。

例子

for (int i = 1; i <= n; i++) {
    f[i] = 1;
    for (int j = 1; j < i; j++)
        if (a[j] < a[i]) f[i] = max(f[i], f[j] + 1);
}

每个 i 看能接在哪个 j 后面。

常见错误

练习 做完再看下一课

朴素 LIS 是双重循环。

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

Ctrl / ⌘ + Enter 运行 · Tab 缩进

输出
 

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

左右方向键也可翻课