自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 13. 读书笔记

《Grokking Algorithms》读书笔记利用课余时间,我阅读了《Grokking Algorithms》这本书。这本书设计得很容易理解。 示例丰富,图文并茂,以一种让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。而且每当一个新概念被引入时,作者都会立即解释它,或者告诉读者什么时候会解释它,避免了思想上的巨大飞跃。其中,动态规划这部分的讲解给我留下的印象比较深刻。动态规划就是把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,解决这类过程优化问题的新

2020-06-09 23:13:12 205

原创 圆排列问题

圆排列问题1. 问题圆排列问题:给定n个圆的半径序列,将它们放到矩形框中,各圆与矩形底边相切,求具有最小排列长度的圆排列。2. 解析圆排列问题的解空间是一棵排列树。按照回溯法搜索排列树的算法框架,设开始时a=[r1,r2,……rn]是所给的n个元的半径,则相应的排列树由a[1:n]的所有排列构成。1.center计算圆在当前圆排列中的横坐标,由x^2 = sqrt((r1+r2)2-(r1-r2)2)推导出x = 2sqrt(r1r2)。2.Compute计算当前圆排列的长度。变量lenmin

2020-06-03 20:28:33 1165

原创 12. 图的m着色问题

图的m着色问题1. 问题给定图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。2. 解析定义color数组代表的含义:color[n],大小为n,下标肯定代表顶点,里面的值代表这个顶点放的是哪种颜色。graph[n][n]代表无向图的连接矩阵。  traceback(v)的v代表某一个顶点,这个顶点具体放哪种颜色不知道,肯定有个for循环从第一种颜色到最后一种颜色都要试

2020-05-31 15:47:47 509

原创 11. 最优前缀码

最优前缀码1. 问题给定字符集C={x1, x2, …, xn}和每个字符的频率f(xi),求关于 C 的一个最优前缀码。2. 解析1.根据给定的n个权值{w1,w2,…,wn}构成n棵二叉树的合集F={T1, T2, …, Tn}, 其中每棵二叉树Ti中只有一个带权为wi根结点,其左右子树均为空。2.在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和。3.在F中删除这两棵树,同时将其新得到的二叉树加入F中。4.重复2和

2020-05-12 21:35:55 835

原创 10. 贪心算法解相容问题

相容问题1. 问题相容问题,解析时给出其他几种贪心策略(如按开始时间从小到大、每个活动时间的占用时间等),并给出这些贪心策略无法实现最优的反例。有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。2. 解析3. 设计A={1}j = 1for i = 2 to n doif ...

2020-05-05 14:45:45 278

原创 9. LCS算法

LCS算法1. 问题试求 X=“ABCBDAB” 和 Y="BDCABA"的最长公共子序列。2. 解析3. 设计4. 分析时间复杂度:O(m*n)5. 源码

2020-04-26 08:20:59 215

原创 8. 动态规划求矩阵链乘法

矩阵链乘法1. 问题设A1, A2…, An为n个矩阵的序列,其中A1为Pi-1*Pi阶矩阵,这个矩阵链的输入用向量P=<P0, P1, P2…Pn>给出。给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。2. 解析3. 设计void matrixChainOrder(int *p,int Length,int m[][M],int s[][M]){ i...

2020-04-14 20:31:23 242

原创 7. 动态规划解投资问题

投资问题1. 问题2. 解析3. 设计 for (k = 2; k <= m; ++k) {// 从第二个阶段到最后一个阶段 for (i = 0; i <= n; ++i) { // 遍历所有的投资金额 t[i] = f[i];// 第k阶段初始最优解 认为是把所有金额投给第k个项目 cin >&...

2020-04-14 10:41:30 1057

原创 6.分治法求第k小元素

分治法求第k小元素1. 问题选第k小元素:特定分治策略2. 解析3. 设计public static int Select(int a[], int l, int r, int k){ int p = FindMid(a, l, r); //递归寻找中位数的中位数 int i = Partion(a, l, r, p); //进行划分过程 ...

2020-04-05 19:59:26 770

原创 5.分治法解最近对问题

分治法求最近对1. 问题设p1=(x1, y1), p2=(x2, y2), …, pn=(xn, yn)是平面上n个点构成的集合S,设计算法找出集合S中距离最近的点对。2. 解析可以划一条垂线,把点集分成两半:PL和PR。于是最近点对或者在PL中,或者在PR中,或者PL,PR各有一点。把三种距离情况定义为dL, dR, dC.其中dL, dR可以递归求解,于是问题就变为计算dC。设...

2020-03-30 00:58:29 610

原创 4. 归并排序算法

归并排序算法1. 问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k2. 解析(2)merge(A,p,q,r)3. 设计public void mergeSort(int[] list, int start, int end){ if(start < end){ int mid = (start + end)/2; ...

2020-03-21 20:12:02 145

原创 3.2 二分查找法

二分查找法1. 问题采用二分查找法,在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.2. 解析二分查找:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则查找过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。时...

2020-03-14 17:27:48 347

原创 3.1 顺序查找法

顺序查找1. 问题采用顺序查找法,在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.2. 解析时间复杂度:O(n)顺序查找:从第一个元素m开始逐个与需要查找的元素x进行比较,当比较到元素值相同(即m=x)时返回元素m的下标,如果比较到最后都没有找到,则返回0。3. 设计int SeqSearch(int list[], int x)...

2020-03-14 17:24:45 413

原创 2.2 Dijkstra's Shortest Path Algorithm

Dijkstra’s Shortest Path1. 问题对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径2. 解析首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。3. 设计void dijk...

2020-03-08 17:15:57 400

原创 2.1 Floyd's Shortest Path Algorithm

Floyd’s Shortest Path1. 问题用Floyd算法求解下图各个顶点的最短距离。写出Floyd算法的伪代码和给出距离矩阵(顶点之间的最短距离矩阵)2. 解析1,从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。把...

2020-03-08 17:07:18 229

原创 1.2 Kruskal’s MST Algorithm

Kruskal’s MST1. 问题假设G=(V, E)是一个无向连通图,U是顶点V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。2. 解析1、设图的顶点集合为U,树的顶点集合为V2、从图中任一点出发,选择权重值最小的边,检查加入这条边后最小生成树是否形成闭环,如果没有形成了闭环,加上这条边,否则,跳过这条边。3、...

2020-03-01 14:15:08 241

原创 1.1 Prim’s MST Algorithm

Prim’ MST1. 问题假设G=(V, E)是一个无向连通图,U是顶点V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。2. 解析1、设图的顶点集合为U,树的顶点集合为V2、从图中任一点出发,选择权重值最小的边,检查加入这条边后最小生成树是否形成闭环,如果没有形成了闭环,加上这条边,否则,跳过这条边。3、重复步骤...

2020-03-01 14:14:49 383

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除