怎么把问题拆成步骤
前面说过,算法就是“解决问题的固定步骤”。可是面对一个大问题,这些步骤往往想不出来。诀窍只有一个:一口吃不下,就把它拆成同样形状的小块。
一口吃不下
让你把整个房间收拾干净,会让人无从下手。
从哪里开始、按什么顺序,都想不出来。
大问题本来就是这样,当成一整块来看,大得一口吃不下。
点一下这个大问题,它就会拆成几个小块。收拾房间 → 书桌 · 床 · 地板 · 书架。
把房间当成一整块看,让人发愁;拆成书桌、床、地板、书架以后,一下子就觉得能做了。
解决大问题的第一步,就是这个:把它拆小。
同样的形状,更小的问题
仔细看看拆出来的小块,会发现一件有意思的事。
小块说到底也是“收拾”,只不过收拾房间这件事缩小成了收拾书桌。
小块和原来的问题形状一样,只是更小。
点一个小块,就能看到里面。里面说到底也是同样形状的更小问题。收拾书桌也 = 收拾。
这样好,是因为只要会解大问题,就能用同样的办法解小块。
不用学新办法。
形状一样,把原来的办法缩小来用就行。
给小块排好顺序
光拆开还没完,小块也有顺序。
地上东西乱扔,要是先扫地,上面掉下来的东西又会弄乱。
先收拾书桌和床上,最后再扫地,这才是正确的顺序。
按处理的顺序点小块。先做上面(书桌·床·书架),最后扫地板,就对了。
顺序排对了,小块之间就不会互相妨碍。
不会再出现前一块弄乱、后一块又得收拾的情况。
就像第1课看到的那样,同样的小块,顺序不同,结果就不同。
把小块的答案合起来
小块一个个都解决了,书桌、床、地板都干净了。
可是等一下,只解决了小块,房间不是还没收拾完吗?
不是的。小块全都解决了,合起来就是一个干净的房间。
依次点已解决的小块,它们就会合成一个。小块的答案全部凑齐,就是大问题的答案,也就是干净的房间。
所以说,合起来也不是自动完成的。
把小块的答案收集起来连成一个,也是实实在在的一步。
拆开、按顺序解决、合起来,这几步都做对了,大问题才算真正解决。
总结:拆开、同样形状、顺序、合并
面对大问题发愁时,就想想这四个节拍。
第一,拆成同样形状的小块。第二,明白小块也是同样的问题。
第三,排出正确的顺序。第四,把小块的答案合起来。
这就是计算思维的起点。
依次点这四个节拍,要点就整理好了。拆开 → 同样形状 → 顺序 → 合并。这是处理大问题的一张图。
现在,遇到再大的问题也不用怕:一口吃不下,拆开就是了。
只是小块一多,先做哪个,顺序就变得非常重要。
下一课我们来讲排队,也就是排序。