递归算法
概念:利用程序直接或间接调用自身的函数,解决相关问题的算法。
思维方式:把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
关键点:递归边界及递归定义(大型问题与小型问题之间的关系)。
记忆化搜索:遇到重叠的子问题直接调用其结果。
解题通常的三步骤:
1)分析问题、寻找递归:找出大规模问题与小规模问题之间的关系
2)绅士边界、控制递归:找出终止条件
3)设计函数、确定参数:设计函数体中的操作及相关参数
贪心算法
概念:利用最优策略,将复杂问题分解成子问题,通过子问题的最优解法得到整体问题的最优解。
关键点:题目是否适用于贪心算法,如何确定所选择的策略为**最优策略**(举反例)。
基本思路(取自信息学奥赛一本通):
1)建立数学模型来描述问题
2)把求解的问题分成若干个子问题
3)对每一个子问题求局部最优解
4)把子问题的局部最优解合成原来问题的解
适用问题:局部最优策略能导致产生全局最优解
PS:贪心算法只进行局部分析,不具备”大局观“,且**无后效性**(决策一旦做出无法更改)
解决问题
递归算法基本算是后续题目中的一个必经之路了,利用递归的模式来不断的缩小问题的规模,同时还能把以前稍微复杂的问题轻松理解,因此可谓是重中之重了,(虽然感觉我玩的还不熟)。
贪心的话个人感觉适用范围不及递归来的大,但难是真的难。主要还是用与最优解的问题,且个人感觉是递归的特殊版本。
学习感想
进入算法领域之后感觉每次写题大脑都在颤抖,脑子是真的疼。虽然以前对vb中的算法有一定学习,但不得不承认还是学的不够深入啊……总之希望自己能活下去吧,毕竟总要有些东西来让脑子想想的嘛(怕不是要超负荷……)。
版权声明:本文为qq1476318201原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。