算法第四章

一、对贪心算法的理解

  个人理解,贪心算法是类似数学归纳法的思想,从局部拓展到整体,即从寻找局部最优的选择,一直这样以同样的贪心策略选择下去,最后整体就会是最优解了。举个例子,就像货币找零问题,需要求找的纸币最少,则此处的贪心策略是按面额从大到小来找零,第一步贪心选择就是找最大面额的,这是第一步的最优解;第二步贪心选择找第二大面额的,以此类推,每一步都是当前的最优解,最后整体必然是最优解。但并不是所有问题都能成功找到对应的贪心策略,所以要权衡什么时候使用贪心算法什么时候使用动态规划。另外,贪心算法最重要的就是找对贪心策略,一定要尝试举出反例,找对贪心策略是重中之重。

 

二、汽车加油问题的贪心选择性质

  首先加满油可以行驶 n 公里,就要判断每两个加油站直接的距离不能超过 n , 否则就到不了下一个加油站,就输出 “No solusion!” 。至于如何计算最少加油次数,我的算法是计算第一个站到最后一个站的总共里数除以每次加满油后可以行驶的公里数 n, 得出总加油次数。

 

三、学习中遇到的问题及结对编程的情况

1、学习中遇到的问题

  看一个题就可能很快想到贪心策略但并没怎么去思考反例就直接编程实现了,或许会导致后面发现贪心策略错误需要重新思考贪心策略再重新编程实现需要更多时间。另外需要多尝试是否有不同的贪心策略来解决一道题,多方面思考下。

2、结对编程的情况

  这次和玉霖的上机实践,第一题大家很快思考出贪心策略并实现。但第二题时候,因为依旧很快想出了我们认为正确的贪心策略,然后遇到 bug 就一直在那改,又发现对题目理解错了,再次成功 debug 又继续遇到新的 bug。 就是一直没想过是贪心策略出错,总觉得可以继续这样成功 debug 。最后在老师的指导下发现是贪心策略选择有误,但已经没时间了。就是说思考贪心策略时候要谨慎严谨,不能想出了一个就鲁莽去试,在遇到 bug 时应该思考贪心策略的正确性,不能在一棵树上吊死。总的来说,彼此都有点欠缺实践,需要多练习。

posted @ 2019-11-22 16:03  ErwinGluttony  阅读(171)  评论(0编辑  收藏  举报