1、定义
按照问题的要求,一一列举所有有可能的解,然后进行判断,若符合要求则采纳这个解,不符合就抛弃。
2、算法实现
第一部分(循环部分):
利用循环把所有有可能的解,一一列举出来。需注意不能遗漏任何一个解,也要避免重复。
要考虑如何设计循环变量、初值、终值和递增值。循环变量是否参与检验。
为了提高解题效率,尽可能的缩小枚举范围。
第二部分(检验);
准确找出判断条件,对每一个解进行检验。
3、枚举算法实例
第一题:分数拆分(Fractions Again?!,UVa 10976)
输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y。
样例输入
2
12
样例输出
2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24
解题思路:由给出的式子,和x>=y,可知,k<y<=2k,通过一一枚举y