计算机科学中有一个经典的“分治算法”,蕴藏着学习的大智慧。

分治算法的基本思想:是将一个规模为N的问题,分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。

通俗的解释是:把大问题拆解成小问题,分而治之,各个击破。

举一个例子:假设有16个硬币,其中一个是假币,比真币轻。如何找出假币?

你可以两两比较,比如在天平上分别测量1和2,3和4,5和6……你 最多通过8次比较,就能找到假币。

有没有更简单的方法?

你可以把16个硬币分成两组,一组8个,一起比较。哪一边更轻,就包含假币。然后把轻的那组再一分为二,4个和4个比较……通过4次就可以找到假币。

还有没有更快的方法?

你可以把硬币分成5、5、6三组。5和5称量第一次。

如果平衡,说明硬币在6个中。然后把6个硬币分成2、2、2三组。同样的方式,两组称量,如果平衡,就在第三组中。如果哪一组轻,就在其中。

如果不平衡,轻的包含假币。同样分成三组2、2、1。2和2称量。如果不平衡,另外1个就是假币;如果哪一组轻,假币就在其中。

通过不断分类讨论,你最多只需要三次称量,就一定可以找到假币。

数据越多,情况越多,分类讨论的方式越能够大幅缩小试错数量,提高效率。

平时做题时也是如此,那些复杂的数学、物理题目,难在哪里?就是情况复杂多变。你如果一个一个试错,根本没有时间。会做题的学霸,懂得分类讨论的方法,通过分门别类,快速缩小解题范围,快速找到求解目标。

复杂题目都是由简单题构成的,学习最重要的环节,就是拆解答案和解题流程,要能够精准锁定知识点。

所以我常说:要把大问题拆解成小问题,把复杂问题拆解为简单问题,把多步任务拆解为单步任务,化大为小,化整为零,分而治之,各个击破。

当你学会了拆解之后,你就可以聚焦每一个小问题,定位自己缺漏的知识点。这时候,这道题的答案其实已经不重要了,你现在最应该做的是,回到课本,把那个不会的知识点学会。当你把知识漏洞一个一个都补上之后,不但这道错题学会了,而且碰到任何新题和变化,也可能做出来。

题目都是知识点的拼接和组合。题型是皮,知识是骨。抓住骨干,事半功倍。

学习不讲方法,就像驴拉磨一样,重复一万遍,也是在低水平上不断绕圈。

分类讨论,步步为营。

这是做题心法,也是学习秘籍。

—— 相关阅读 ——