数据结构--算法学习方法

      贪心算法:贪心算法基于的思想是每一次选择都做当前最好的选择,这样最后的结果虽然不必定是最优解,可是也不会比最优解差不少。举个例子说明可能好懂一些:一帮基友去聚餐,菜是一份一份上的,我每一次夹菜都只夹牛肉/海鲜吃,可能到最后我吃的牛肉/海鲜不少,但不必定表明我吃掉的东西的总价值最高,可是相对来讲价值也很高了换句话说,对于贪心算法,其核心在于设定一个标准让咱们去贪。回到这个问题,这个标准就有三种设法了:一、价值最高的先装进背包;二、重量最低的先装进包;三、性价比(价值和重量的比值)最高的先装进背包。我在这里用的是第三种方法,用快排做了排序。在 装的过程当中要注意的就是,当前物品能不能放进背包。这个是须要考虑的。由于背包问题也有好几种,如:0-1背包问题(每种物品只能拿一次)、彻底背包问题 (每种物品都能拿无限次)、多重背包问题(每种物品都有必定的数量能够拿)。因此在不一样状况下贪心算法的一些细节设计也是不同的,这个须要本身考虑。算法

    动态规划算法:贯穿动态规划算法的就是状态和状态转移方程这两个东西,而要获得这两个东西须要咱们把咱们的问题分解为更小的子问题,经过分析子问题去得到。数组

    那么回到咱们这个问题,因为每次装东西进背包,咱们只考虑可否装进,以及是否当前状态下的最优选择,也就是说,咱们须要用背包的容量去设计一个数组,存储每一单位个容量的最大价值是多少,以此类推,得到背包容量下的最大价值是多少。
设计