枚举
概念
- 基于已有知识进行答案猜测的求解策略
- 对解集合中的每一项根据条件进行检验
- 不重复检验
- 很多情况下枚举意味着使用循环
- 一般性 + 完备性
分析
原子 - 局部 - 整体
- 拆分出原子操作,分析每个原子操作的影响、规律
- 确定枚举对象、范围和判定条件
- 逐一枚举可能的解并验证是否是问题的解
- 关键问题
- 给出解空间,建立简洁的数学模型,减少枚举的状态数目
- 减少搜索空间,缩小各变量取值范围,避免不必要的计算
- 合适的搜索顺序,简化过程,及早排除明确的错误答案
技巧
- 如果存在某个局部,一旦局部的状态被确定,剩余部分的状态只能是确定的一种或较少种,那么只需枚举局部状态。固定部分,确定规律
- 尽可选使用stl算法和合适的数据结构来缩减时间
- 好的排序和处理顺序非常重要