自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 作业13 读书笔记

读书笔记

2020-06-09 22:28:16 105

原创 作业12 着色问题

1.问题 给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的2个顶点着不同颜色。 2.解析 设无向图G有n个顶点,搜索深度为n的m叉完全树; 判断每一条到叶子节点的路径能否走通。 3.设计 4.分析 最坏情况下,遍历深度为n的m叉完全树; 时间复杂度O(nm^n); 5.源代码 #include<bits/stdc++.h> using namespace std; int n;//点的个数 int m;//颜色数 int mm

2020-06-01 17:56:18 838

原创 作业11 最优前缀编码

1.问题 实例:{5,5,10,10,10,15,20,25} 2.解析 按照贪心算法每次找权值最小(即值最小)的两个数,构成孩子结点,并将这两个数据排除出这一堆数据之外。由于哈弗曼树的数据全在叶子结点,所以把上述权值最小的两个数据构成父结点,然后再将父结点的权值放回上述数据,返回第一步,重复上述过程,直到所有的数据都变成哈夫曼树的叶子结点 3.设计 for循环{ for循环查找无父节点的节点; O(nlogn)排序; 找出最小的两个节点,插入新的节点作为他们的父节点。 } 4.分析 排序O(nlogn

2020-05-18 22:47:18 311

原创 作业10 相容问题

相容问题——贪心法 1.问题 有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。 2.解析 方法一:按截至时间从小到大排序 (1)选择活动1,截止时间最早:活动2,3与活动1不相容,活动4与活动1相容; (2)选择活动4:活动5,6与活动4不相容,活动7与活动4相容; (3)选择活动7:活动8,...

2020-05-04 22:33:01 242

原创 作业9 最长公共子序列

1.问题 x={‘a’,‘b’,‘c’,‘d’,‘a’,‘c’},y={‘b’,‘c’,‘a’,‘d’,‘a’,‘c’},求x和y的最长公共子序列。 2.解析 设Zk={z1,z2,z3,…zk}是Xm={x1,x2,x3,…xm}和Yn={y1,y2,y3,…yn}的最长公共子序列。 则可以得到: 若xm=yn=zk,那么Zk-1={z1,z2,z3,…zk-1}是Xm-1={x1,x2,x3,...

2020-04-27 22:06:37 189

原创 作业8 矩阵链乘法

1.问题 数据:{30,35,15,5,10,20,25} 2.解析 为了计算表达式,我们可以先用括号明确计算次序,然后利用标准的矩阵相乘算法进行计算。完全括号化(fully parenthesized):它是单一矩阵,或者是两个完全括号化的矩阵乘积链的积。 例如如果有矩阵链为<A1,A2,A3,A4>,则共有5种完全括号化的矩阵乘积链。 (A1(A2(A3A4)))、(A1((A2...

2020-04-20 22:18:09 144

原创 作业7 投资问题

1.问题 数据: 2.解析 3.设计 记第i项项目投资j万元可获利mmp[i][j]; dp[i][j]为前i个项目共投资万元可获得的最大利益; 动态转移方程:dp[i][j]=max(dp[i][j],dp[i-1][j-k]+mmp[i][k]); 4.分析 dp[i][j]=max(dp[i][j],dp[i-1][j-k]+mmp[i][k]); 0<=i<=n,0&l...

2020-04-13 21:56:11 207

原创 作业6 第K小元素:特定分治策略

1.问题 求第K小元素。 2.解析 3.设计 4.分析 5.源代码 int Partition( int a[], int start, int end, int pivot ){ int target = a[pivot]; int low = start, high = end; a[pivot] = a[low]; while ( high > low ){ for...

2020-04-07 12:03:56 104

原创 作业5 最近对问题

1.问题 平面内有n(n>1)个不重复的点,求最近的两个点间的距离。 2.解析 解决这个问题有两种方法: 1.当n<=3时,直接暴力枚举,时间复杂度为O(n)。 2.当n>3时,可以采用分治的方法将一个大的就近对问题分解为两个小的就近对问题,再将问题的结果合并,求出最后的解。 将这些所有的点按x坐标升序排序后从中间分成两个n/2的集合后求最近对,假设结果分别为d1,d2,那么大集...

2020-03-30 22:28:04 104

原创 作业4 二分归并排序

1.问题 二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k。 2.解析 二分归并算法是一种分治算法,它将一个大数组的排序的问题转换为两个小数组的排序再合并的问题, 这样多次分解后,变换成两个数比大小然后合并的问题,最后合并解决问题。 3.设计 (1)拆分:每次将数组从中间拆分成两个小数组,直至不能拆分为止; (2)归并:将两个有序数组(因为拆分成了单数组,当然是有序的)合...

2020-03-23 21:50:01 258

原创 作业3 查找

1.问题 写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0. 2.解析 在单调数组中找一个数我们第一个会想到的就是顺序查找,这是最简单最暴力的查找方法,就是从头到尾,一个一个的检索; 第二种是比较常见用的也比较广的——二分查找。二分二分,故名思意,就是将一个单调数组从中间分成两个单调数组,通过比较中间值mid,来判断要找的数据在...

2020-03-16 23:40:42 133

原创 作业2.2 Dijkstra

** 最短路算法——Dijkstra ** 1.问题 对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径,按实验报告模板编写算法。 2.Dijkstra的解析 Dijkstra是一种求单源最短路的算法,也是解决不带负权的图; 我们可以想象一下这样一个问题:如果a到b的距离是最短的,那么a通过b到和b相连的点的距离也是最短的; Dijkstra 的思路就是这样,每次给a找到一个距离最近的...

2020-03-09 23:15:03 187

原创 作业2.1 Floyd

** 最短路算法——Floyd ** 1.问题 用Floyd算法求解下图各个顶点的最短距离。写出Floyd算法的伪代码和给出距离矩阵(顶点之间的最短距离矩阵),按实验报告模板编写算法。 2.Floyd的解析 Floyd算法是计算最短路的一种算法,解决不带负权的图; 我第一次了解到这个算法的时候,脑子里就一句话“三角形两边之和大于第三边”; 先说Floyd的一个递推公式:mp[i][j]=min(...

2020-03-09 22:25:39 155

原创 作业1.2 Kruskal

** 最小生成树——Kruskal算法 ** 1.解决问题 给定一个由n个节点组成的带权值的无向图G=(V,E),求由n个节点n-1条边组成的连通图中,所有边权值最小的图,即求G的最小生成树。 2.Kruskal的解析 Prim算法是以节点为基础进行计算,Kruskal算法则是以边为基础进行计算; 先将所有边按权值进行由小到大排列后; 从权值小的边开始,将节点连起来,(这里要用到并查集的方法判环)...

2020-03-02 23:46:54 190

原创 作业1.1 Prim

** 最小生成树——Prim算法 ** 1.解决问题 给定一个由n个节点组成的带权值的无向图G=(V,E),求由n个节点n-1条边组成的连通图中,所有边权值最小的图,即求G的最小生成树。 2.Prim的解析 先将图的点集V中一个节点X放入树的节点集合U{}中作为起始点; 找到与X相连的权值最小的边,并将相连的节点放入U中; 再找与这两个点(其中一点)相连的权值最小的边,并将相连的节点放入U中; …...

2020-03-02 23:17:47 170

空空如也

空空如也

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

TA关注的人

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