seegongsik
算法

怎么把问题拆成步骤

前面说过,算法就是“解决问题的固定步骤”。可是面对一个大问题,这些步骤往往想不出来。诀窍只有一个:一口吃不下,就把它拆成同样形状的小块。

01

一口吃不下

让你把整个房间收拾干净,会让人无从下手。
从哪里开始、按什么顺序,都想不出来。
大问题本来就是这样,当成一整块来看,大得一口吃不下。

一整块,发懵。点一下切开
一口吃不下的大问题,切成同样形状的小块。

点一下这个大问题,它就会拆成几个小块。收拾房间 → 书桌 · 床 · 地板 · 书架。

把房间当成一整块看,让人发愁;拆成书桌、床、地板、书架以后,一下子就觉得能做了。
解决大问题的第一步,就是这个:把它拆小。

02

同样的形状,更小的问题

仔细看看拆出来的小块,会发现一件有意思的事。
小块说到底也是“收拾”,只不过收拾房间这件事缩小成了收拾书桌。
小块和原来的问题形状一样,只是更小。

点一块往里看看
看,里头也还是同样形状的“收拾”。只是更小了
小块和原来的问题同样的形状,只是更小。所以能用同样的方法解。

点一个小块,就能看到里面。里面说到底也是同样形状的更小问题。收拾书桌也 = 收拾。

这样好,是因为只要会解大问题,就能用同样的办法解小块。
不用学新办法。
形状一样,把原来的办法缩小来用就行。

03

给小块排好顺序

光拆开还没完,小块也有顺序。
地上东西乱扔,要是先扫地,上面掉下来的东西又会弄乱。
先收拾书桌和床上,最后再扫地,这才是正确的顺序。

按处理顺序点小块
切开之后顺序要紧。地板最后扫,才不会又乱。

按处理的顺序点小块。先做上面(书桌·床·书架),最后扫地板,就对了。

顺序排对了,小块之间就不会互相妨碍。
不会再出现前一块弄乱、后一块又得收拾的情况。
就像第1课看到的那样,同样的小块,顺序不同,结果就不同。

04

把小块的答案合起来

小块一个个都解决了,书桌、床、地板都干净了。
可是等一下,只解决了小块,房间不是还没收拾完吗?
不是的。小块全都解决了,合起来就是一个干净的房间。

点已解的小块,合起来
凑齐的小块 (0/4)
小块答案全凑齐,那就是大问题的答案。合起来也是一步。

依次点已解决的小块,它们就会合成一个。小块的答案全部凑齐,就是大问题的答案,也就是干净的房间。

所以说,合起来也不是自动完成的。
把小块的答案收集起来连成一个,也是实实在在的一步。
拆开、按顺序解决、合起来,这几步都做对了,大问题才算真正解决。

05

总结:拆开、同样形状、顺序、合并

面对大问题发愁时,就想想这四个节拍。
第一,拆成同样形状的小块。第二,明白小块也是同样的问题。
第三,排出正确的顺序。第四,把小块的答案合起来。
这就是计算思维的起点。

依次点这四拍
切开 - 同样形状 - 顺序 - 合起来。这就是计算思维的起点
遇上大问题,就用这四拍。切小了,再难的问题也抓得住。

依次点这四个节拍,要点就整理好了。拆开 → 同样形状 → 顺序 → 合并。这是处理大问题的一张图。

现在,遇到再大的问题也不用怕:一口吃不下,拆开就是了。
只是小块一多,先做哪个,顺序就变得非常重要。
下一课我们来讲排队,也就是排序。

一句话总结大问题没法一口解决。所以要把它拆成同样形状的小问题,排好解决的顺序,再把小块的答案合起来。用“拆开 - 顺序 - 合并”来处理大问题,就是计算思维的起点;再难的问题,拆小了也就抓得住了。
← 算法
如果有帮助,请支持我们