一句话理解
双层枚举:枚举一对 (i,j)。
为什么要学
所有二元关系的暴力基础。
讲解
注意 i<j、i<=j 还是任意有序对,避免重复和遗漏。复杂度 n²。
很多题先双层枚举,再发现内层能预处理成 O(1)。
例子
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
; // 枚举无序对
j 从 i+1 开始,每对一次。
常见错误
- i、j 都从 1 到 n,同一对算两次。
- n=1e5 双层。
第 159 课
双层枚举:枚举一对 (i,j)。
所有二元关系的暴力基础。
注意 i<j、i<=j 还是任意有序对,避免重复和遗漏。复杂度 n²。
很多题先双层枚举,再发现内层能预处理成 O(1)。
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
; // 枚举无序对
j 从 i+1 开始,每对一次。
枚举所有无序对时,内层从 i+1 开始可以避免重复。
Ctrl / ⌘ + Enter 运行 · Tab 缩进
左右方向键也可翻课