@烟雨倾城ゝ
这个作者很懒,什么都没留下…
展开
-
带你了解树的全家桶(BST树到AVL树到B树到B+树)
带你了解树的全家桶(BST树到AVL树到B树到B+树)原创 2022-11-30 21:38:20 · 767 阅读 · 0 评论 -
回溯法 | 0-1背包问题
回溯法 | 0-1背包问题原创 2022-10-24 17:09:59 · 665 阅读 · 0 评论 -
肝了一星期,终于把堆的创建、插入、删除和堆排序肝完了(超详细图文讲解)
肝了一星期,终于把堆的创建、插入、删除和堆排序肝完了(超详细图文讲解)原创 2022-09-30 17:07:32 · 714 阅读 · 0 评论 -
什么是二叉查找树?看完这篇就懂了
什么是二叉查找树?看完这篇就懂了原创 2022-09-22 11:41:50 · 439 阅读 · 0 评论 -
二叉树是什么?有几种遍历方式?怎么实现遍历?看完这篇文章之后相信你会有更好的理解
二叉树是什么?有几种遍历方式?怎么实现遍历?看完这篇文章之后相信你会有更好的理解原创 2022-09-20 15:45:26 · 732 阅读 · 0 评论 -
原来栈和队列之间其实也是可以互相转换的啊
原来栈和队列之间其实也是可以互相转换的啊原创 2022-09-16 17:31:01 · 358 阅读 · 0 评论 -
队列的两种实现方式---数组+链表
队列的两种实现方式---数组+链表原创 2022-09-07 19:11:49 · 571 阅读 · 0 评论 -
“栈” 能不能完美实现括号匹配问题呢?
“栈” 能不能完美实现括号匹配问题呢?原创 2022-09-07 10:39:20 · 156 阅读 · 0 评论 -
谈谈 “栈” 到底是个啥玩意,真的有那么难吗?
谈谈 “栈” 到底是个啥玩意,真的有那么难吗?原创 2022-09-06 15:42:23 · 322 阅读 · 0 评论 -
约瑟夫环真的那么难吗?
约瑟夫环真的那么难吗?原创 2022-09-05 18:05:59 · 900 阅读 · 0 评论 -
快慢指针的几种应用场景,你真的了解吗?
快慢指针的几种应用场景,你真的了解吗?原创 2022-09-05 11:36:35 · 668 阅读 · 0 评论 -
动态规划 | 0-1背包问题
1、问题分析有 n 个物品和购物车的容量,每个物品重量为 w[i],价值为 v[i],购物车的容量为 W。选若干个物品放入购物车,让其价值达到最大,可表示如下:问题归结为求解满足约束条件,使目标函数达到最大值的解向量 X = {x1,x2,…,xn}。首先分析该问题是否具有最优子结构性质。(1)分析最优解的结构特征假设已经直到 X = {x1,x2,…,xn} 是原问题 {a1,a2,…,an} 的最优解,那么原问题去掉第一个物品就变成了子问题 {a2,a3…,an},如图4-89所示。原创 2021-06-15 21:41:06 · 507 阅读 · 2 评论 -
动态规划 | 矩阵连乘
问题:1、问题分析矩阵连乘问题就是对于给定 n 个连乘的矩阵,找出一种加括号的方法,使得矩阵连乘的就算量最小。(1)那什么是矩阵可乘呢?如果两个矩阵,第 1 个矩阵的列等于第 2 个矩阵的行时,那么这两个矩阵是可乘的,如果4-41所示。(2)矩阵相乘后的结果是什么?多个矩阵相乘的结果矩阵,其行、列分别等于第 1 个矩阵的行、最后 1 个矩阵的列,如图4-41所示。(3)两个矩阵相乘需要多少次乘法?例如两个矩阵 A(3x2)、B(2x4)相乘,执行过程如图4-43所示,那么一共.原创 2021-06-15 21:22:59 · 158 阅读 · 0 评论 -
动态规划 | 最长公共子序列
目录1、动态规划基础1、什么是动态规划?2、动态规划算法要素(1)最优子结构(2)子问题重叠2、最长公共子序列(1)问题分析(2)算法设计1)确定合适的数据结构2)初始化3)循环阶段4)构造最优解(3)图解算法1)初始化2)i = 1:s1[0] 与 s2[j-1] 比较,j = 1,2,3,……,len2。3)i = 2:s1[1] 与 s2[j-1] 比较,j = 1,2,3,……,len2。4)继续处理 i = 3,4,……,len1:s1[i-1] 与 s2[j-1] 比较,j = 1,2,3,……原创 2021-06-13 21:38:12 · 121 阅读 · 0 评论 -
一文搞懂递归算法与动态规划的关系
目录1、什么是递归?2、递归算法的通用解决思路(1)明确你要这个函数的功能(2)寻找问题与子问题的关系 阶乘的关系(即递推公式)(3)将第二步的递推公式用代码表示出来补充到步骤 1 定义的函数中3、实战演练案例一:斐波那契数列(1)定义一个函数,它代表了求第 n 项的值函数(2)寻找问题与子问题的关系 阶乘的关系(3)将第二步的递推公式用代码表示出来补充到步骤 1 定义的函数中案例二:青蛙跳台阶问题(1)定义一个函数,它代表了跳上 n 级台阶的跳法(2)寻找问题与子问题的关系 阶乘的关系(3)将第二步的递推原创 2021-06-13 15:08:39 · 282 阅读 · 0 评论 -
分治法 | 快速排序
1、什么是快速排序?快速排序是通过一组排序将要排序的数据分割成独立的两个部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归实现,以此使所有数据变成有序序列。2、算法设计(1)分解:先从数列中取出一个元素作为基准元素。将问题分解为两个子序列,小于或等于基准元素的子序列在左侧,大于基准元素的子序列在右侧。(2)治理:对两个子序列进行快速排序(3)合并:将排好序的有序子序列进行合并,得到最终的有序序列快速排序与合并排序的区原创 2021-06-12 21:41:27 · 684 阅读 · 0 评论 -
分治法 | 合并排序
分治法 | 合并排序1、什么是归并排序?合并排序就是将待排序的数组分成两半后排好序,然后再将两个排好序的序列合并成一个有序序列。由于排序问题给定的是一个无序序列,可以将待排序元素分解成两个规模大致相等的子序列,如果还不易解决,再将得到的子序列继续分解,直到子序列中包含的元素个数为 1 .因为单个元素的序列本身就是有序的,此时便可以进行合并,从而可以得到一个完整的有序序列。2、算法设计合并排序就是采用分支的策略实现对 n 个元素进行排序的算法。(1)分解:将待排序的元素分成大小大致相同的两个子原创 2021-06-12 12:03:50 · 542 阅读 · 0 评论 -
分治法 | 二分搜索法
1、什么是分治法?其本质就是将一个大规模的问题分解成若干个规模较小的相同子问题,分而治之。通俗来说,就是将一个难以直接解决的大问题,分割成一些小规模的相同问题,各个击破,分而治之。2、分治算法秘籍(1)分解:将要解决的问题分解为若干个规模较小、相互独立、与原问题形式相同的子问题(2)治理:求解各个子问题。由于各个子问题与原问题形式相同,只是规模较小,当子问题规模划分的足够小,就可以使用较为简单的方法解决。(3)合并:将子问题的解逐层合并构成原问题的解。3、算法设计问题描述: 给定原创 2021-06-11 17:39:44 · 527 阅读 · 0 评论 -
贪心算法 | 最小生成树(Kurskal算法)
1、算法设计什么是Kurskal算法?假设 G = (V,E)是无向连通带权图,V = {1,2,……,n};设最小生成树 T = (V , TE),该树的初始状态为只有 n 个顶点而无边的非连通图 T = (V , { }),Kurskal算法将这 n 个顶点看成是 n 个独立的连通分支。它首先将所有的边按权值从小到大排序,然后只要 T 中选中的边数不到 n-1 ,就做如下贪心选择:在边集 E 中选取权值最小的边 (i , j),如果将边 (i , j)加入集合 TE 中不产生回路,就将该边加入原创 2021-06-10 19:32:09 · 901 阅读 · 0 评论 -
贪心算法 | 最小生成树(Prim算法)
贪心算法 | 最小生成树(Prim算法)6、沟通无限校园网——最小生成树问题:校园网是为学校师生提供资源共享、信息交流和协同工作的计算机网络。校园网是一个宽带、具有交互功能和专业性很强的局域网络。如果一所学校包括多个学院及部门,也可以形成多个局域网络,并通过有线或无线方式连接起来。原来的网络系统只局限于以学院、图书馆为单位的局域网,不能形成集中管理以及各种资源的共享,个别学院还远离大学本部,这些情况严重地阻碍了整个学校的网络化需求。6.1 问题分析该问题无向连通图 G=(V,E)来表示通信网络原创 2021-06-10 19:08:21 · 313 阅读 · 1 评论 -
贪心算法 | 神秘电报密码——哈夫曼编码
5、神秘电报密码——哈夫曼编码5.1 算法设计哈夫曼编码的基本思想是以字符的使用频率作为权构建一颗哈夫曼树,然后利用哈夫曼树对字符进行编码。构造一颗哈夫曼树,是将所要编码的字符作为叶子节点,该字符在文件中的使用频率作为叶子节点的权值,以自底向上的方式,通过n-1次的“合并”运算后构造出一棵树,核心思想是权值越大的叶子离根越近。哈夫曼算法采取的贪心策略是每次从树的集合中取出没有双亲且权值最小的两棵树作为左右子树,构造一颗新树,新树根结点的权值为其左右孩子结点权值之和,将新树插入到树的集合中,求解原创 2021-05-27 23:31:11 · 1664 阅读 · 0 评论 -
贪心算法 | 一场说走就走的旅行——最短路径
4、一场说走就走的旅行——最短路径问题:有一天,孩子回来对我说:“妈妈,听说马尔代夫很不错,放假了我想去玩。”马尔代夫?我也想去!没有人不向往一场说走就走的旅行!“其实我想去的地方很多,呼伦贝尔大草原、玉龙雪山、布达拉宫、艾菲尔铁塔……”小孩子还说着他感兴趣的地方。于是我们拿出地图,标出想去的地点,然后计算最短路线,估算大约所需的时间,有了这张秘制地图,一场说走就走的旅行不是梦!4.1 问题分析根据题目可知,这是一个求单源最短路径的问题。给定有向带权图G =(V,E),其中每条边的权是非负实数。原创 2021-05-27 21:31:42 · 2850 阅读 · 7 评论 -
贪心算法 | 高级钟点秘书——会议安排
3、高级钟点秘书——会议安排问题:“钟点秘书”,是指年轻白领女性利用工余时间为客户提供秘书服务,并按钟点收取酬金。“钟点秘书”为客户提供有偿服务的方式一般是:采用电话、电传、上网等“遥控”式服务,或亲自到客户公司处理部分业务。其服务对象主要有三类:一是外地前来考察商务经营、项目投资的商人或政要人员;二是前来开展短暂商务活动,或召开小型资讯发布会的国外客商;三是本地一些请不起长期秘书的企、事业单位。某跨国公司总裁正分身无术,为一堆会议时间表焦头烂额,希望高级钟点秘书能做出合理的安排,能在有限的时间内召开原创 2021-05-19 16:50:01 · 399 阅读 · 0 评论 -
贪心算法 | 背包问题——阿里巴巴与四十大盗
2、背包问题——阿里巴巴与四十大盗问题:有一天,阿里巴巴赶着一头毛驴上山砍柴。砍好柴准备下山时,远处突然出现一股烟尘,弥漫着直向上空非扬,朝他这儿卷过来,而且越来越近。靠近以后,他才看清原来是一支马队,他们公有四十人,一个个年轻力壮、行动敏捷。一个首领模样的人背负沉重的鞍袋,从丛林中一支来打那个大石头跟前,喃喃地说到:“芝麻、开门吧!”,随着那个头目的喊声,大石头前突然出现一道宽阔的门路,于是强盗们鱼贯而入。阿里巴巴待在树上观察他们,直到他们走的无影无踪之后,才从树上下来。他大声喊道:“芝麻、开门吧!”原创 2021-05-19 16:30:45 · 488 阅读 · 0 评论 -
贪心算法 | 最优装载问题——加勒比海盗船
贪心算法的本质:它是解决问题的策略上“目光短浅”,只根据当前已有信息就做出选择,而且一旦做出选择,不管将来有什么结果,这个结果都不会发生改变。换言之,贪心算法并不是从整体最优考虑,而是在某种意义上的局部最优。注意有时得到的结果并不是最优解,而是最优解的近似解。如何使用贪心算法呢?(1)贪心策略首先要确定贪心策略,选择当前看上去最好的一个方案。例如,挑选苹果,如果你认为个大的是最好的,那你每次都从苹果堆中拿一个最大的,作为局部最优解。贪心策略就是选择当前最大的苹果;再例如另外一种贪心策略是选择当原创 2021-05-19 16:03:16 · 584 阅读 · 0 评论