1.枚举算法思想

枚举(enumeration),又被称为穷举。

是一种很朴素的解题思想,当问题存在大量的可能答案时,而暂时又无法用逻辑方法排除大部分候选答案时,就不得不采用逐一检验这些答案的策略,这就是枚举算法的思想。

当不考虑算法的优劣性,即时间空间复杂度,运行代码的快慢,则可用枚举暴力求解。

2.枚举算法实现要点

实现枚举算法时,一定要注意:

  1. 为保证结果正确,应做到既不重复又不遗漏。
  2. 为减少程序运行时间,应j尽量减少枚举的次数。

(1)既不重复又不遗漏

例如,求x^2+y^2 = 2000 的正整数解,如果互换x和y视为同一组解,如(8,44)和(44,8),那么y就不能从1枚举到44,否则得到的解就重复了,y只能从1枚举到x(或从x枚举到44)。

(2)尽量减少枚举次数

一般有两种方法

  1. 减少枚举量(即循环层数)
  2. 减少枚举的范围(即某层循环的次数)

对于第一种:如果内层循环的量可以由外层循环的量确定,那么内层循环就可以取消了,即减少变量。

对于第二种:如果能提前知道某种方案不可能求出解,则不能进行枚举或提前结束当前的枚举,减少不必要的枚举。

下篇文章为枚举算法例题

小A的蓝桥系列持续更新