算法
算法实验
球球ice
这个作者很懒,什么都没留下…
展开
-
算法 test14 圆排列
问题圆排列问题:给定n个圆的半径序列,将它们放到矩形框中,各圆与矩形底边相切,求具有最小排列长度的圆排列。解析对于给定的n个圆,设计一个优先队列式分支限界法,计算n个圆的最佳排序方案,使其长度达到最小。按照回溯法搜索排列树的算法框架,设开始时 a = [r1, r2, …, rn] 是所给的 n 个圆的半径,则相应的排列树由a[1, …, n] 的所有排列构成。设计//核心代码void backtrack(int t){ if(t==N) { compute(); } else原创 2020-06-07 18:52:37 · 509 阅读 · 0 评论 -
算法 test10 相容问题
问题相容问题,解析时给出其他几种贪心策略(如按开始时间从小到大、每个活动时间的占用时间等),并给出这些贪心策略无法实现最优的反例。解析把活动按照截止时间从小到大排序,使得f1≤f2≤…≤fn,然后从前向后挑选,只要与前面选的活动相容,就可以把项活动选入A。K=4(1)选择活动1,截止时间最早:活动2,3与活动1不相容,活动4与活动1相容;(2)选择活动4:活动5,6与活动4不相容,活动7与活动4相容;(3)选择活动7:活动8,9与活动7不相容,活动10与活动7相容;(4)选择活动10:活动1原创 2020-06-07 15:18:29 · 218 阅读 · 0 评论 -
算法 test12 图的m着色问题
问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。解析设计 int color[110]; //存储共有几种颜色int g[110][100]; //无向图的邻接矩阵 1表示两点相连,0表示不相连 输入n,m 输入邻接矩阵 初始化color矩阵,值都为0 颜色种类为1…m Int原创 2020-06-06 22:01:04 · 313 阅读 · 0 评论 -
算法 test6 特定分治策略
问题在数组S中查找第k小的元素。解析k=|S1|+1,m就是所要找的第k小的数;(以m为划分标准后,比m小的有|S1|个,如果恰巧,k=|S1|+1,则m就是所要找到第k小的数k<=|S1|,归约为在S1中找第k1小的子问题,k1在子问题中的相对位置不变,即k1=k;k>|S1|+1,归约为在S2中找k2位置的子问题,k2相对于S2子问题和k相对于S的关系,即k2=k-|S1|-1。(在S中找k,就是在S2中找k2)设计Select(S,k)输入:n个数的数组S,正整数k输原创 2020-05-23 15:43:37 · 230 阅读 · 0 评论 -
算法 test5 最近对问题
问题设S是平面上n>1个点构成的集合,假设集合中的每个点都不一样,最近对问题就是找出集合S中距离最近的点对。解析当n大于等于2小于等于3时,问题可以通过蛮力算法求解;当n大于3时,可以将集合分成两个子集S1和S2,然后通过递归求解子问题S1和S2来得到最近对问题的解。设计输入:按x坐标升序排列的n(n>1)个点的集合S={(x1,y1 ),(x2,y2 )…y.n)输出:最近点对的距离如果n等于2,则返回(x1,y1 )和(x2,Y2 )之间的距离,算法结束;划分:m=S中各点x原创 2020-05-23 14:52:52 · 294 阅读 · 0 评论 -
算法 test11 哈夫曼编码
问题构造最优前缀码的贪心算法就是哈夫曼算法(Huffman),给出伪代码,并根据实例{5, 5, 10, 10, 10, 15, 20, 25},描述建树过程。解析设计哈夫曼提出构造最优前缀码的贪心算法,由此产生的编码方案称为哈夫曼编码。其构造步骤如下:(1)哈夫曼算法以自底向上的方式构造表示最优前缀码的二叉树T。(2)算法以|C|个叶结点开始,执行|C|-1次的“合并”运算后产生最终所要求的树T。(3)假设编码字符集中每一字符c的频率是f©。以f为键值的优先队列Q用在贪心选择时有效地确定原创 2020-05-23 13:39:49 · 446 阅读 · 0 评论 -
算法 test9 LCS算法
问题设X和Y是两个序列,如果存在 X 的元素构成的按下标严格递增序列 ,使Xij=Zj,j=1,2,3…,k,那么 Z 是 X 的子序列,Z 含有的元素个数,称为子序列的长度。如果Z既是X的子序列,也是Y的子序列,则称Z是X和Y的公共子序列。实例:X=<A,B,C,B,D,A,B>Y=<B,D,C,A,B,A>Z=<B,D,A,B>解析设计算法1:求出最长子串的长度C[0,j]=C[I,0]=0,1≤i≤m,1≤j≤nfor i=1 to mf原创 2020-05-23 11:07:00 · 253 阅读 · 0 评论 -
算法 test8 矩阵链乘法
问题设A1,A2,…,An为n个矩阵的序列,其中A1为Pi-1*Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,…Pn>给出。给定向量P, 确定一种乘法次序,使得基本运算的总次数达到最小。解析设计输入:矩阵链Ai-j的输入向量P=P<Pi-1,Pi,…,Pj> 1≤i≤j≤n输出:计算Ai-j所需最小乘法运算次数m[i…j]和最后一次运算的位置s[i…j]令所有m[i,j]初始值为0,s[i,j]的初始值为i, 1≤i≤j≤nfor r=2 to n d原创 2020-05-23 10:44:31 · 556 阅读 · 0 评论 -
算法 test7 投资问题
问题设 m 元钱,n 项投资,函数f i(x)表示将 x 元投入第 i 项项目所产生的效益,i=1,2,…,n.问:如何分配这 m 元钱,使得投资的总效益最高?解析设计递推方程:Fk(x) = max{fk(xk)+Fk-1(x-xk)},k=2,3,…,n边界条件:Fk(x)=f1(x),Fk(0)=0,k=1,2,…,nxi(x)=k:新加第i项时,总共分配x元时,第i项分配了k元(xk)for k=1,2,3,…,n //第k个项目原创 2020-05-23 09:27:34 · 287 阅读 · 0 评论 -
算法 test4 二分归并
问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k解析设计可以将该组数分成A,B组,再可以将A,B组各自再分成二组。依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个小组就可以了。这样通过递归先分解数列,再合并数列就完成了归并排序。分析假设输入规模为n,最好情况下,需要比较n/2次,最坏情况下(n-1)次,时间...原创 2020-03-22 11:07:33 · 95 阅读 · 0 评论 -
算法 test3 检索之直接查找
问题在一个排好序的数组中查找x,如果x在数组中,输出x在数组的下标j;如果x不在数组中,输出j=0。解析设计使用循环,依次遍历,将key与数据data依次比较,若key==data,则返回下标,跳出循环。for(i=0;i<n;++i) { if(x==a[i]) { printf("%d\n",i+1); m=1; break; } }...原创 2020-03-15 19:49:17 · 374 阅读 · 0 评论 -
算法 test3 检索之二分查找
问题在一个排好序的数组中查找x,如果x在T中,输出x在数组的下标j;如果x不在数组中,输出j=0。解析设计int binary_search(int key,int a[],int n) //自定义函数binary_search(){ int low,high,mid,count=0,count1=0; low=0; high=n-1; while(lo...原创 2020-03-15 19:42:55 · 82 阅读 · 0 评论 -
算法 test2 Dijkstra算法求最短路径
问题对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径。解析设计分析源码原创 2020-03-16 15:59:14 · 336 阅读 · 0 评论 -
算法 test2 Floyd算法求最短距离
问题用Floyd算法求解下图各个顶点的最短距离。写出Floyd算法的伪代码和给出距离矩阵(顶点之间的最短距离矩阵)。解析设计分析源码原创 2020-03-16 12:08:36 · 238 阅读 · 0 评论 -
算法 test1 Kruskal算法构造最小生成树
1. 问题假设G=(V,{E})是连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值(代价)的边,且u∈U,v∈V-U,则T为一颗包含边(u,v)的最小生成树。2.解析令最小生成树T的初始状态为只有n个顶点且没有边的非连通图T=(V,{ }),其中 每个顶点都自成连通分量。在E中选择代价最小的边,如果这条边依附的顶点在T中不同的连通分量上,则将该边加入T中,否则则舍弃该边。重...原创 2020-03-02 22:34:17 · 374 阅读 · 0 评论 -
算法 test1 Prim算法构造最小生成树
1. 问题假设G=(V,{E})是连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值(代价)的边,且u∈U,v∈V-U,则T为一颗包含边(u,v)的最小生成树。2.解析在所有u∈U,v∈V-U的边(u,v)∈E中找到一条代价最小的边(u0,v0),并将其并入集合ET,u0并入U。重复上述操作,直至U=V。则此时的T=(V,{ET})为最小生成树。Prim算法构造最小生成树过...原创 2020-03-02 19:51:34 · 229 阅读 · 0 评论