一、学前花絮
我们之前对算法的学习包括基础知识如数据结构及大致常用算法类型。又学习了贪心算法、回溯算法、分治算法并结合实际情况进行示例。今天学习枚举算法,简答说这一算法就是常说的穷举法,是我们日常经常用到的方法。
我们上小学的时候,几乎遇到的所有方程都是有明确答案的,有精确解。那是因为它属于低次方程(幂次≤2),而3次以上的高维方程一般情况下是没有精确解的。那怎么办呢?我们可以用枚举法让结果接近正确值就可以了。
生活中的很多事情都是如此,比如你大学毕业或者没有上大学也参加了工作,那么你走哪条路能最后成功呢?这通常也是无解的,很多都是事后诸葛亮,当多少年过去之后才后悔当初应该那样、应该这样,那么这种问题实际上也可以用枚举的方法,寻找最适合自己成功的路径。
也就是说,当精确解遥不可及时,枚举思维让我们无限逼近真实。
二、Python实现枚举算法
2.1 从Python的enumerate()说起:枚举的日常应用
简单却强大的enumerate():

这是什么?这就是连续枚举——为每个元素分配一个连续的编号。
为什么重要?因为它体现了枚举的核心思想:系统地、不遗漏地处理每个可能。
2.2 枚举算法的本质:当暴力成为智慧
算法中的枚举思想:
枚举算法,又称穷举法,核心很简单:
l列出所有可能性
l检查每个可能性是否满足条件
l找到解(或所有解)
比如找3位的水仙花数。水仙花数(Narcissistic Number,也译作 “自恋数”“阿姆斯特朗数”)是指一个 n 位正整数,其每个位上的数字的 n 次幂之和 等于它本身。

以上程序就是典型的穷举法(枚举)。三位数字的范围是100~1000(不含),那么我们用循环range(100,1000)表示,这里的1000个数字按照水仙花数的定义:每位数字的三次方之和等于该数字本身。终于找到了结果[153, 370, 371, 407]。
2.3 当数学公式失效时:枚举思维的威力
一个无法用公式求解的方程
考虑这个方程:
坏消息:对于5次及以上的多项式,数学家已经证明没有通用的求根公式。
好消息:我们可以用枚举思维找到近似解。
数值方法:聪明的枚举
以上是程序,细心的朋友发现,这里有个有趣的现象:怎么变量名字似乎中文?不要以为这是为了说明,这就是可执行的程序!自python3.0开始支持Unicode,除了中文还支持韩文、日文等。
输出结果:

2.4 科学计算的实际:当枚举成为唯一选择
现实世界的方程
在工程和科学研究中,我们经常遇到:
有限元分析:工程中的枚举思维
有限元分析(FEA)是工程设计的核心技术,它的本质是:
1. 将连续结构离散化为有限个小单元(枚举网格)
2. 对每个小单元建立方程
3. 联立所有方程求解
4. 得到整个结构的近似解
2.5 从简单枚举到智能逼近
枚举算法的进化
2.6 枚举思维的实际价值
1. 解决不可解问题
当理论无法给出精确解时,枚举提供了一条实用的路径。
2. 验证理论结果
可以用枚举方法验证解析解的正确性:
3. 工程实践的可靠性
在工程中,我们常常不信任单一方法的结果,而是:
l用不同方法计算
l比较结果
l取最可靠的那个
2.7 学习建议:掌握枚举思维
从简单开始
l先理解enumerate():掌握基本的连续枚举
l实现简单枚举算法:如找素数、水仙花数
l学习数值方法:二分法、牛顿法等
l应用于实际问题:用枚举思维解决工程问题
三、小结
今天的文章是学习枚举算法思想,在现实世界中,enumerate()的连续枚举思想,与求解复杂方程的数值方法,本质上是相通的——都是通过系统性的尝试,逼近我们想要的结果。
让我们保持学习的热情,2026年一马当先!