- 博客(16)
- 收藏
- 关注
原创 圆排列问题
问题 给定n个圆的半径序列,将它们放到矩形框中,各圆与矩形底边相切,求具有最小排列长度的圆排列。 解析 该问题是一个排列问题,问题的解存储在序列r={r1,r2,r3…}中,问题的解空间树是一颗排列树。用x={x1,x2,x3…}表示当前排列的各个圆的圆心。 下界函数:用Center(t)计算新增圆的圆心,每次新增一个圆则排列的序列会增长,比较center(t)+r[t]+r[0]这个值(注意不是序列中总长,只是t号圆的最右端的长度)和已知序列长度min比较,如果大于min则剪枝。 用compute计算.
2020-06-15 18:02:48
631
原创 着色问题
问题 图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。 解析 将着色解的生成过程类比为完全叉树的遍历过程,从根节点出发,每个节点都有m个子节点(m种着色),第i层代表第i个结点的所有着色情况,共有n层,判断每一个节点是否满足着色要求(边的两顶点着色不同)。若满足要求则继续着色它的子节点直到全部顶点都着上色且满足要求;若不满足要求,该节点的所有子节点都不再将被遍历,回溯到..
2020-06-01 20:21:04
1258
原创 最优前缀码
问题 给定字符集C={x1,x2,……,xn}和每个字符的频率f(x1),求关于C的一个最优前缀码。 解析 设计 1、数组haftree初始化,所有数组元素的双亲、左右孩子都置为-1; 2、数组haftree的前n个元素的权值置给定权值; 3、进行n-1次合并 3.1 在二叉树集合中选取两个权值最小的根节点,其下标分别为i1,i2; 3.2 将二叉树i1、i2合并为一棵新的二叉树k。 分析 源码 https://github.com/CunHua-YYT/CunHua-YYT/bl..
2020-05-18 19:21:18
1351
原创 相容问题
问题 有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。设S={1,2,…,n}为活动的集合,si和fi分别为活动i的开始和截止时间,i=1,2,…,n。定义:活动i和j相容<==>si≥fj或sj≥fi,i≠j求S最大的两两相容的活动子集A。 解析 方法一:按活动截止时间从小到大排...
2020-05-06 17:30:59
703
原创 LCS
问题 给定序列X=<x1,x2,…,xm>,Y=<y1,y2,…,yj>,求X和Y得最长公共子序列 解析 在图中标注得H点中,我们既可以选择左边也可以选择上边,这里我选择了往左走的情况,此时得到的结果为BDE,当然如果H点网上走的话结果就是BCE。 3. 设计 while (~scanf("%s%s", a + 1, b + 1)) { memset(dp, 0, s...
2020-04-27 19:01:07
810
原创 矩阵链乘法
问题 解析 3. 设计 4. 分析 Tn=O(n^3) 5. 源码 https://github.com/CunHua-YYT/CunHua-YYT/blob/master/MATRIX_CHAIN_ORDER.cpp
2020-04-20 22:50:38
523
原创 投资问题
问题 设m元钱,n项投资,函数f(x)表示将x元投入第i项项目所产生的效益,i=1,2…n。问:如何分配这m元钱,使得投资的总效益最高? 假设分配给第i个项目的钱数是xi,问题描述为: 目标函数:max{f1(x1)+f2(x2)+…+fn(xn)} 约束条件:x1+x2+…+xn=mxi(包含于n) 解析 设计 分析 源码 https://github.com/CunHua-YYT/Cu...
2020-04-13 20:49:56
662
原创 选择第K小元素
问题 用分治策略找出第K小的元素。 解析 设计 分析 时间复杂度为O(n); 源码 https://github.com/CunHua-YYT/CunHua-YYT/blob/master/Select%20K.cpp
2020-04-06 19:28:32
592
原创 Closest_Pair
问题 给定平面上n个点,找其中的一对点,使得在n个点组成的所有点对中,该点对间的距离最小。 解析 设计 double a(left,right) { mid=(left+right)/2 if(left=right) return 999999; if(riget-left)=1 return distance(left,right) distanceleft=a(left,mid) dist...
2020-03-29 19:33:26
426
原创 Mergesort 二分归并
问题 对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k 解析 设计 if a<b then mid=[(a+b)/2] Merge sort(a,mid) Merge sort(mid+1,b) merge(a,mid,b) 分析 源码 https://github.com/CunHua-YYT/CunHua-YYT/blob/master/mergeSo...
2020-03-22 10:43:24
289
原创 顺序查找
问题 在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0。 解析 在一个排序好的数组中,从下标为0得数据开始依次寻找,直到找到或者查找完所有数据为止。 设计 For(j=0;j++;j<999) { If (T[j]x)print j; If(j999&T[j]!=x) print “j=0” } 分析 O(n) 源码 https:...
2020-03-10 19:40:43
1050
原创 二分查找
问题 在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0。 解析 在已经排序好的数组中设值a,b分别代表两端得点,mid代表中间点,mid=(a+b)/2, 如果x大于T[mid],则a=mid+1,反之b=mid-1,若a>b,结束循环。 设计 While(a<b) { If x=T[mid] 结束; If x>T[mid] ...
2020-03-10 19:39:38
666
原创 Floyd
问题 给定一个有向图,并且给各条边赋上权值,求解一个顶点到另一个顶点的最短距离。 解析 设计 分析 时间复杂度:O(n^3) 源码 https://github.com/CunHua-YYT/CunHua-YYT/blob/master/Floyd.cpp ...
2020-03-07 21:48:45
512
原创 Dijkstra
问题 给定一个有权值有向图,指定一个顶点,求出其到另一个指定顶点的最短距离。 解析 设计 初始化数组g[][],d[],p[]; For(循环次数小于等于最多边数) { For() 找出未存放的最小顶点并标记 For()更新d数组 } 分析 O(elogv)//v为顶点数 源码 https://github.com/CunHua-YYT/CunHua-YYT/blob/mas...
2020-03-07 21:46:27
358
原创 Kruskal解决最小生成树问题
Kruskal解决最小生成树问题 问题 给定一个有若干边和顶点构成的图,从中选则部分边构成树,且树的权值要最小。 解析 设计 Void Kruskal(MGraph) { T ={} While(T中不到n-1条边&&E中还有边) {从E中抽取一条权值最小的边 将E(s,e)从E中删除; If(E(s,e)不在T中构成回路) 将E加入T Else 继续循环 } } 分析 O(E...
2020-03-02 20:03:14
580
原创 Prim解决最小生成树问题
问题 给定一个有若干边和顶点构成的图,从中选则部分边构成树,且树的权值要最小。 。 解析 设计 Void Prim(a) {visit[a]=ture For(i=1 to n,i++) Dis[i]=MGraph[a][i] For(i=1 to n,i++) { 选出Dis中最小的边; Visit[i]=TURE; Tmp.i=I; Tmp.w=dis[i] For(j=1 to n,j+...
2020-03-02 20:00:33
422
空空如也
myeclimpse2022如何添加struts
2022-11-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅