算法第二章作业
来讲一下学习分治法的体会
分治法 即为 divide -> conquer 很容易了解他的目的性:把大问题分解为若干个子问题,分别解决并合并。看似简单,但很多情况下是非常有实用性的。
但是并不是所有情况都能用分治法,下面就我的理解写一些分治法适用的情况:
- 该问题分解出来的子问题是互相独立的,不存在交并情况。
- (最关键的) 能否成功合并子问题 , 这是分治法能否成功的关键。如果不行,可以考虑用刚学的动态规划。
返回第一点,其实这涉及了分治法的效率。如果存在大量重复的子部分,那么分治法需要做大量的无用功,当子问题数量有一定规模时,采用分治法显得很不明智。
下面这个链接 提供了大量 分治法解决的样例,我自己也从中学到了很多:https://blog.csdn.net/qq_39382769/article/details/80788293
https://blog.csdn.net/qq_44116998/article/details/89854703
结对编程:我自己收获最大的是 当把自己的想法分享给伙伴时,很多时候面对对方的疑问会回答不出来,迫使了我很多次地不断思考,优化自己的代码,在讲方法的过程中,
如果作为讲解的一方:无疑是需要理解的更加透彻的,把复杂的方法用很简单,直白的语言表达出来,才能证明真正掌握了这个思想
如果作为听讲的一方:会迫使自己不断去看问题的所在,看代码中的缺点。
无论哪一方,结对编程都比自己闷头学的效果好得多。