一、枚举法
枚举算法的思想是:将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,丢弃不合适的。
使用枚举算法解题的基本思路如下所示:
(1)确定枚举对象、枚举范围和判定条件。
(2)逐一枚举可能的解,验证每个解是否是问题的解。
枚举算法一般按照如下3个步骤进行:
(1)题解的可能范围,不能遗漏任何一个真正解,也要避免有重复。
(2)判断是否是真正解的方法。
(3)使可能解的范围降至最小,以便提高解决问题的效率。
什么时候选择枚举法?
在任何情况下,都需要选准最合适的对象,无论是枚举还是其他算法思想,这是最关键的。选准(枚举)对象的根本原因在于优化,具体表现为减少求解步骤,缩小求解的解空间,或者是使程序更具有可读性和易于编写。有时候选好了枚举对象,确定了枚举思想解决问题,问题就迎刃而解了。有的时候,当题目逼着你用枚举思想解题时,需要考虑的往往是从众多枚举对象中选择最适合的,这需要辨别的智慧。
运用枚举思想思考时需要面对如下表的问题:
特点及要求 | 可能出现的问题 |
---|---|
选取考察对象 | 选取的考察对象不恰当 |
逐个考察所有可能的情况 | 没有“逐个”考察,不恰当地遗漏了一些情况;可能的情况 没有“逐个”考察不恰当地遗漏了一些情况;没有考察“所有”,对解空间集的确定失误 |