合作与共赢+分治法初探

            其实一开始知道要组队完成某一项任务的时候我是并不太愿意的。我习惯了一个人做什么,习惯了独来独往,不太喜欢团体合作。因为总是会觉得商量起来是一件很麻烦的事情,而且和别人解释半天你自己的思想也显得太过枯燥和乏味。我本身是一个急切的性格,遇事难免风风火火,不愿意过多探讨。但是不得不说这次合作带给了我新的体验。

           这次合作编写二分法程序算法的时候,我觉得我从中收获了很多。从一开始几个人基础的讨论,再到修改,你来我往之中,大家都学到了东西。很多时候自己一个人打代码会变得怠惰,总觉得我一个人打代码就很ok了,遇到不会的地方,只要想办法编译成功就行,知其然并不知其所以然,很多时候是一种囫囵吞枣的心态去完成一个代码,这样下来虽然也会有一定收获,但是实在并不高,而这次老师要求我们合作,而在合作之中,与别人思维火花发出的碰撞和另一个角度解决问题让我受益匪浅,并且老师在最后要求我们要能解释这个代码每一行的含义时,这时候就逼着我不能再去“囫囵吞枣”,而是认真咀嚼,真正理解“二分法”的含义。

         总而言之,这次合作虽然有思维的碰撞,但这也是成长所需的调味料。我很开心能合作这一次的代码。

         "合作,才能共赢。"

 

 

分治法:

         第二章花了大篇幅来讲分治法,分治法在我的理解就是,将一个大的问题分成若干个相对独立子问题,然后递归地解决这些问题。当我们得到分解的子问题时,解决简单的问题总比解决一个复杂而庞大的问题要简单得多。举个简单的例子,比如说一个班级,将班级分成若干个小组,每个组有一个组长。而每个组都要求背诵一篇课文,但每个组背诵得课文不一样。那么对整个班来说,学生人数众多,背诵总类众多导致不方便去抽查。采用分治法将一个班(大问题)分成若干个独立的小组(子问题),每个人分别去小组长那里背诵,小组成员背诵的内容一模一样,大家不停去组长那里背诵(递归),直到所有人都背诵结束(解决问题)。这样就将复杂问题简单化,让抽背文章这一事件更有效率。

        其实我个人一开始并不是很喜欢递归。在刚接触c++的时候就觉得,递归虽然很好理解,但是很难打出代码,而且递归的代码虽然寥寥数行,但是却是“节省空间消耗时间”,这与我“节省时间消耗空间”的理念不符。当后面代码量越来越大时才发现,有时候节省一定空间并不一定完全“吃亏”,比如汉诺塔问题,如果不用递归就会十分麻烦,因此我才慢慢接受递归,发现原来递归也是有有点的。

        刚学完分治法的时候,最典型的就是二分法,二分法以前也学过,因此再次相遇还有些亲切。当时觉得分治法真的很厉害,但是当学到了第三章时突然发现,动态优化似乎更厉害一些。或许我们学得将是越来越难,却越来越厉害。期待这个学期结束之后,我能有一个精彩的蜕变!

你可能感兴趣的:(合作与共赢+分治法初探)