第二章 枚举

1.概念

枚举就是把所有可能的答案一一列举出来再加以判断,又称暴力枚举、穷举。

2.做题步骤

建立数学模型:可能的情况是什么?要枚举哪些要素? 减少枚举的空间:枚举的范围是什么?是所有的内容都需要枚举吗? 选择合适的枚举顺序:从前往后,还是从后往前进行枚举

3.常见题型

基础枚举 数值枚举:遍历区间[1,n],筛选满足条件的数(如被3整除且名各位和为偶数) 字符串枚举:遍历字符/字符串集合,匹配特定模式(如以指定字母开头且长度为偶数)。 组合枚举 子集枚举:用位运算/递归枚举集合子集,筛选符合条件的子集(如元素和能被k整除) 排列枚举:通过回溯生成全排列,筛选符合条件的排列(如无重复数字且能被指定数整除)。 算法结合 枚举+贪心:枚举关键状态后应用贪心策略(如任务分配顺序枚举+贪心资源分配)。 枚举+动态规划:枚举状态后用DP求解子问题(如背包容量枚举+DP计算最优解)。、 场景枚举 生活场景:枚举活动组合,求解最大兼容活动数(如时间安排问题)。 游戏场景:枚举移动方向,搜索迷宫路径(如BFS/DFS遍历方向)。