分治:将问题划分为互不相交的子问题递归求解。 动规:应用于子问题重叠的情况。求解过程中将子问题的解记录在表格中。 动态规划主要用于求解最优化问题。 求解步骤: 找到最优子结构。最优子结构性质:问题的最优解由相关的子问题的最优解组合而成,而这些子问题可以独立求解。 递归地定义最优解的值。 自底向上地计 ...
转载
2021-08-09 21:07:00
135阅读
2评论
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为
原创
2022-08-03 21:28:27
140阅读
用一个比较通俗的说法来解释递归和回溯: 我们在路上走着,前面是一个多岔路口,因为我们并不知道应该走哪条路,所以我们需要尝试。尝试的过程就是一个函数。 我们选择了一个方向,后来发现又有一个多岔路口,这时候又需要进行一次选择。所以我们需要在上一次尝试结果的基础上,再做一次尝试,即在函数内部再调用一次函数 ...
转载
2021-10-27 15:11:00
100阅读
2评论
满足贪心算法的条件是都满足动态规划的,只是贪心算法的条件更强,不仅前一个步骤的解可以用到后一步,而且前一步的解是子问题的最优解,最后能够得到全局的最优解。 Prim算法是一个求最小生成树的算法。表示图G= <V,E>有邻接表(用于稀疏矩阵)和邻接矩阵(用于稠密矩阵)。下面我给的实例适合用稀疏矩阵。听了大概的算法思想,自己使用二叉堆花了
这个问题是之前考研复试老师问的一个问题,当时答得还不错。今天刷题后记录一下。 贪心算法: 基本思想:贪心算法并不从整体最优上加以考虑,它所做的选择只是在某种意义上的局部最优解。 基本要素:最优子结构性质和贪心选择性质。 动态规划: 基本思想:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些
原创
2022-01-08 17:40:29
944阅读
活动选择问题 (动态规划解决、贪心算法解决)学贪心不贪心
原创
2021-08-01 20:51:43
3443阅读
贪心算法与动态规划在软考中的实践应用
在计算机科学与技术领域,算法无疑是核心之一,它们为解决各种问题提供了高效的策略和方法。在众多算法中,贪心算法和动态规划是两种常见的、在解决优化问题中极具实用性的策略。它们在软件水平考试(软考)中也占据了重要的位置,经常以例题的形式出现,检验考生对于算法原理和实践应用的掌握程度。
贪心算法,顾名思义,它总是做出在当前看来最好的选择,希望通过每个局部最优的选择
一,问题分析最短路径问题:给定一个有向带权图G=(V,E),再设其中一个点为源点,现在要计算从源到其他所有各个节点的最短路径长度(权重)。二,算法设计1.我们可以使用迪杰斯特拉算法:先求出长度最短的一条路径,参照该路径求出长度次短的路径,依次扩展节点,知道到达源节点。 2.基本思想: 假设源点为u,设定2个集合S和V-S,S集合中刚开始只有u一个顶点,当扩展节点寻找最短路径时,将其找到的最短路径相
文章目录python codesketch:pesudoCode:analyize:python codewith recursive and iteration version:# def acti
原创
2022-06-14 17:03:23
234阅读
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。 1.分治法 分治法(divide-and-conquer):将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 
转载
2017-10-16 22:04:15
1843阅读
前言贪心算法或贪心思想,即采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。以下是我在leetcode上面做过的一些经典贪心算法类型题,在此将解题思路分享出来,如有不正确的地方欢迎指正。455.Assign cookies(Easy)题目描述有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃一个饼干,且只有饼干的大小不小于孩子的饥饿度时,这
贪心算法和分治算法、动态规划算法、回溯算法都是一种编程思想,深入理解这些编程思想,我们也可以根据实际情况设计自己的算法。一 贪心算法原理贪心算法的原理比较简单,就是对问题求解的时候,每步都选择当前的最优解,然后已期望得到全局最优解。贪心算法的适用场景是每次选择是没有状态的,也就是不会对后面的步骤产生影响。二 贪心算法举例同样用老师课件中的两个例子:背包问题:假如我们有一个可以装100kg物品的背包
目录贪心算法概念经典问题:部分背包时间复杂度优缺点适用场景 贪心算法概念贪婪算法(Greedy)的定义: 在每一步选中都采取在当前状态下最好或最优的选择,从而希望结果是全局最优的算法。贪婪算法:当下做局部最优判断,不能回退 (能回退的是回溯,最优+回退是动态规划)由于贪心算法的高效性以及所求得答
目录贪心算法的基础知识分糖果 (LeetCode 455)摇摆序列(LeetCode 376)移除K个数字(LeetCode 402)跳跃游戏1 (LeetCode 55)跳跃游戏2 (LeetCode 45)射击气球(LeetCode 452)1. 贪心算法的基础知识贪心算法就是每次都贪心地选择当前最好的那个(局部最优解),不去考虑以后的情况,而且选择了就不能够“反悔”了,如果原问题满足贪心选择
瀑布流布局是前端领域中一个很常见的需求,如何用动态规划和贪心算法去解决它呢?
原创
2021-07-15 13:47:07
275阅读
目录1.定义1.1贪心算法1.1.1解题步骤1.2动态规划1.2.1解题步骤2.联系3.区别1.定义1.1贪心算法贪心算法是指在对问题求解时,总是做出
原创
2022-08-03 17:28:49
89阅读
1.题目描述给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。(nums.length>0)?示例 1:输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。?示例 2:输入:nums = [
原创
2022-07-11 06:27:32
498阅读