武汉加油!中国加油!-C++专辑-从包饺子来看分治与递归

  2020年注定是不平凡的一年,2020年初我们赶上了新冠肺炎疫情大爆发。每天的疫情播报,都牵动着我们的心。我们相信,只要我们众志成城,一定会共克难关,迎来疫情散去,春暖花开的日子。

从疫情爆发到现在,各条战线的医务工作者的努力和坚持,让我们看到了医者仁心。在此对全国的医务工作者尤其是战斗在疫情一线的医务工作者,致以最崇高的敬意!
致敬医护人员
对于孩子们来说,受疫情的影响需要延期开学。在这个时候,也告诉孩子们不要怕,不要慌,和爸爸妈妈和家人在一起,听从国家号召,专家的意见,居家,不乱跑,戴口罩,勤洗手。最后一定会一切平安顺利的。

  今天来聊聊NOIP、CSP-J、CSP-S中非常重要的分治与递归。

饺子

  大家刚过完新年,收到了很多的压岁钱。是不是很开心?前面那句话真的没什么用,相信我,我随便写的。在新年,大家一定都吃了饺子。这是我们优良的新年传统,我在朋友圈还看到了很多同学都参与了包饺子,即使有的同学没有亲自包饺子,应该也看过父母包饺子。有这个前提就足够了。包饺子需要用到饺子馅儿,最开始的时候饺子馅都放在一个盆里,好大一坨。然后大家的父母和自己用勺子或者筷子从一大坨饺子馅儿上面弄一小点放到饺子皮里,“再把饺子皮封口”(加引号是因为这半句话只是在教你包饺子),一个完整的饺子就成型了。在这个过程中,大家把一大坨饺子馅儿分成了一小坨一小坨的,这一小坨是多少合适呢?答案是可以放到饺子皮里。

“把饺子放到锅里蒸熟,饺子出锅,碗里放上醋”。开吃。同学们,你们是不是一个一个的吃呀?你们每吃一个,饺子就少一个。

吃完饭,你们的父母经常会问的一个问题就是,今天吃了多少个饺子呀?你们把吃的饺子数目告诉你们的父母,你的父母把你们吃的饺子数+父母吃的饺子数,就是你们一家子吃的饺子数目。(如果还有其他亲属吃的,继续加,难度是一年级加法)。总的饺子数目里面包含的饺子馅儿就是你们一家吃了多大的一坨。也就是解决了多大的一坨饺子馅儿。

到此,分治与递归就讲完了。是不是一脸懵?分治与递归就在你们的眼前,你们却对他们熟视无睹,视而不见。

包饺子
盆里放的一大坨饺子馅你们会直接全部放到一个饺子里吗?肯定不会,如果真有人那么做,请联系我,让我也长长见识。全部的饺子馅放到一个饺子皮里,非常不利于包,更不利于吃。无论是在生活、学习,还是在NOIP、CSP-J、CSP-S的考试中,给大家的试题往往不是一步可以解决的。那么我们怎么办呢?答案就是把这个大的问题拆分,拆分到什么程度呢?拆分到我们可以直接一步解决的程度,就像是饺子馅多小一坨呢?一个饺子皮能放下就成。

在我们拆分问题的时候,往往利用递归函数来做,把一个大问题拆分成一个一个的小问题。就像是把盆里的一大坨饺子馅拆分成一小坨一小坨的饺子馅。小问题有个特点,那就是我们直观上或者稍加思考就知道怎么解决。就好比那一小坨饺子馅直接就可以放到饺子皮里。我们不用去想办法扩大饺子皮。

在我们把一小坨饺子馅放到饺子皮里的时候,我们肯定是先试试能不能放的下,如果放不下,那么我们就让这一小坨饺子馅再小点。直到能放下。我们的处理方式是先测试,再处理。同样在我们写递归函数的时候也是,先测试再处理,这也就是为什么递归函数的递归结束条件会放在递归函数的开始位置。

递归函数一定记得写递归结束条件,不然考试肯定会出现问题。

当我们把一个大问题拆分成一个一个的小问题,接下来就是解决这些一个一个的小问题。在拆分的时候,我们已经保证了这些小问题是可以直接且便于解决的,所以这一步非常容易解决。

当我们解决了一个一个的小问题,就像是我们吃掉了一个一个的饺子。那么我们把吃掉的饺子进行累加合并就是我们全部吃掉的总和。是不是我们把这些小问题进行合并,就等于把那个看着无从下手的大问题解决了呢?

从上面的分析我们知道了分治思想的要点:拆分    解决    合并

分治是一种思想,可以说是无处不在,大家掌握了分治思想,对于拿到一个好的竞赛成绩非常的重要。而且对大家的人生成长非常的有好处。

在竞赛中,有很多很多的题目都用到了分治思想。根据后台大家的学习进度,举几个例子,比如归并排序,快速排序,二分查找,倍增等等等等等等。

看到这,我想大家今生都会记得分治和递归。就是你上个卫生间也会不由自主的想起分治和递归,因为你会想起一大坨。(坏笑中)

由于新型肺炎,最近大家上完卫生间冲水的时候记得盖马桶盖哟。因为一大坨里有毒,容易粪口传播。(别想太多)

大家尽量不要出门,在家好好学习。预祝新型肺炎这个大问题早日被分治。:)有空在家多学习哦。
发布了34 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xingzhe_666/article/details/104179568