【经典算法】枚举法

认识枚举法

枚举法的思想其实就是尝试每一种可能的解,如果满足条件就采纳,否则就继续枚举,做到不重复,不遗漏。比如,从班级名单中按照一定的顺序,查找所有符合条件的名字,这就用到了枚举法。

在生活中我们经常会用到枚举法。比如,拿一串钥匙开房间门时,因为钥匙上没有标记,所以就只能一个个试过去,最后找到了和门锁匹配的钥匙,打开了门。

使用枚举法的关键是什么?

我们来试想一下,如果让计算机通过枚举法,来从一串钥匙串中找到房间对应的那把钥匙,那我们需要告诉计算机什么信息呢?

我们要告诉计算机,如果钥匙能打开房间门,就可以不用再往下试了。这是枚举法的一个关键因素:正确解的判断条件。这个问题中的判断条件就是钥匙是否能打开房间门。

枚举法还有一个关键因素是:确定枚举的范围。计算机需要知道一共有几把钥匙,这样他就知道最多要试几次了。

拓展:

枚举法这种算法非常简单,局部使用效果很好,但是当问题的规模变大,运算量变大的时候,执行速度就会变慢。比如,我们要从一本英文字典当中,找到某个单词,比如 zoo,假如不按照首字母分类查找,而是从字典的第一个英文单词开始找,直到到找到 zoo,这时计算机的执行效率就不高。

想一想:

当我们连续输错手机的解锁密码时,手机会提示,如果再输错一次,就要等待一段时间后才可以重新解锁。这是为什么呀?

手机设置连续输错密码就要停用,其实这是在保护财产安全。

假如不这么设置,那么任何一个人,都可以通过一个个枚举所有可能的密码,最终打开你的手机。除了手机、平板,我们在登录网站、APP或在ATM机上输入密码时,系统都会限制密码输入的次数,其实都是为了防止不法分子利用枚举法的思想破解密码。

猜你喜欢

转载自blog.csdn.net/weixin_41989013/article/details/133784626