5-1
在实际问题中,经常遇到在一定范围内寻求某类事物解的问题。比如:求水
仙花数,因为水仙花数是一个三位数,所以,[100,999]就是给定的范围,水仙花
数就是要求的解;又如:百马百担问题,求解决方案,大马数量[1,33],中马数
量[1,50],小马数量[1,100] 就是给定的范围,解决方案就是要求的解等。
像这类问题,可以通过对指定范围内每种可能的情况进行一一测试,验证其
是否是满足条件的解的方法来解决,我们就把这种解决问题的方法称为穷举法。
由于实际问题的指定范围可能很大,所以,穷举法更适合于使用计算机,因
此,这类问题可通过程序设计来解决。
1
(1)往往实际问题给定的范围不一定很明确,需要我们通过分析来确定范
围;
(2)所得到的范围还可以利用给定的部分约束条件进一步缩小,以减少程
序的运行时间,提高效率。
2
通过对实际问题进行分析,给出判断解的条件,有了判断解的条件才能对每
种可能的情况进行一一验证,从而得到问题的解。
1
2
.用循环或循环的嵌套对范围变量的所有可能情况进行一一测试;
3
4
1
范围变量能少用尽量少用,这样可大大减少测试的数量。
例如百马百担问题,对大马、中马、小马均可设一个范围变量dm、zm、xm,
其范围分别是:[1,33], [1,50], [1,100],总的测试数量为33*50*100=165000次;
在大马、中马具体确定后,小马可利用约束条件dm+zm+xm=100来确定,因此,
只需将大马、中马设为范围变量,这样测试数量为33*50=1650次。可见,减少范
围变量的使用可大大减少测试的数量。
2
根据实际问题的隐含条件,可将不符合条件的情况去掉,缩小穷举范围,减
评论0
最新资源