枚举算法
1.枚举算法思想
枚举(enumeration),又被称为穷举。
是一种很朴素的解题思想,当问题存在大量的可能答案时,而暂时又无法用逻辑方法排除大部分候选答案时,就不得不采用逐一检验这些答案的策略,这就是枚举算法的思想。
当不考虑算法的优劣性,即时间空间复杂度,运行代码的快慢,则可用枚举暴力求解。
2.枚举算法实现要点
实现枚举算法时,一定要注意:
- 为保证结果正确,应做到既不重复又不遗漏。
- 为减少程序运行时间,应j尽量减少枚举的次数。
(1)既不重复又不遗漏
例如,求x^2+y^2 = 2000 的正整数解,如果互换x和y视为同一组解,如(8,44)和(44,8),那么y就不能从1枚举到44,否则得到的解就重复了,y只能从1枚举到x(或从x枚举到44)。
(2)尽量减少枚举次数
一般有两种方法
- 减少枚举量(即循环层数)
- 减少枚举的范围(即某层循环的次数)
对于第一种:如果内层循环的量可以由外层循环的量确定,那么内层循环就可以取消了,即减少变量。
对于第二种:如果能提前知道某种方案不可能求出解,则不能进行枚举或提前结束当前的枚举,减少不必要的枚举。
下篇文章为枚举算法例题
小A的蓝桥系列持续更新
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ash's blog!