- 博客(17)
- 收藏
- 关注
原创 2021-06-22
1.问题 图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个 顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方 案;如果不存在,则回答“NO”。 2.解析 3.设计 #include<stdio.h> #include<string.h> const int max=120; int n,m,match;//顶点数,颜色数,边数 int c[max][max];//图的链接矩阵 int b[max];//当前的解 int sum=
2021-06-22 23:12:59
150
原创 最优前缀编码
1.问题 给定字符集C={x1,x2,…,xn}和每个字符的频率f(xi),求关于C的一个最优前缀码。 2.解析 哈夫曼算法: 1)初始化n个单节点的树,每个字符的概率记在树的根中,用作树的权重。 2)找到两棵权重最小的树,把它们作为新树中的左右子树,并把权重和记作新的权重记录在新树的根中。 3)重复第二步直到只剩一颗单独的树。 3.设计 n<-|C| Q<-C //按频率递增构成队列 Q for i<-1 to n-1 do z<-Allocate-Node
2021-06-22 22:57:55
151
原创 最优前缀编码
1.问题 给定字符集C={x1,x2,…,xn}和每个字符的频率f(xi),求关于C的一个最优前缀码。 2.解析 哈夫曼算法: 1)初始化n个单节点的树,每个字符的概率记在树的根中,用作树的权重。 2)找到两棵权重最小的树,把它们作为新树中的左右子树,并把权重和记作新的权重记录在新树的根中。 3)重复第二步直到只剩一颗单独的树。 3.设计 n<-|C| Q<-C //按频率递增构成队列 Q for i<-1 to n-1 do z<-Allocate-Node
2021-06-22 22:56:24
159
原创 算法分析作业十
1.问题 装载问题(0-1背包问题) 2.解析 描述:需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。 3.设计 #include<iostream> #include<string.h> using namespace std; int main(){ int i, j; int n, c; int w[100
2021-06-22 22:42:58
116
原创 算法分析作业九
1.问题 LCS算法和背包算法,特别要求举例时采用不同于讲义的数据进行推导 2.解析 对于字符串:ACEGHI 和 BCDEFGH LCS二维表格 3.设计 def lcs(x, y): m = len(x) + 1 n = len(y) + 1 if m == 1 or n == 1: print("存在空字符串!") return -1 lcs_len = numpy.zeros((m,n)) for i in range(1,
2021-06-22 22:11:28
145
原创 作业八
1.问题 [描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)] 设A1,A2,A3,…,An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,P2,…,Pn>给出。给定向量 P,确定一种乘法次序,使得基本运算的总次数达到最小。 例如n=3时,P={10,20,12,15}; 当(P1P2)P3时,总次数为102012+101215=2400+1800=4200 当P1(P2P3)时,总次数为102015+201215=3000+3
2021-05-10 15:26:16
104
原创 作业七
1.问题 “7.3投资问题,参考讲义的样例数据” 2.解析 递推公式。设Fk(x)表示x万元投给前k个项目的最大收益,k=1,2,…,n, x=1,2,…,m 我们可以得到递推方程和边界条件: 递推方程:Fk(x)=max0≤xk≤x{fk(xk)+Fk−1(x−xk)},k=2,3,…,n 边界条件:Fk(x)=max0≤xk≤x{fk(xk)+Fk−1(x−xk)},k=1,2,…,n 第k步,前后共分配x万元,分配给第k个项目为xk;x-xk万元分配给前k-1个项目。 证明满足优化原则 优化原则: 一
2021-05-10 15:15:02
122
原创 作业六
问题 选第k小元素:特定分治策略” 解析 以S中的某个元素m作为划分标准,将S划分为两个子数组S1和S2,把这个数组中比m小的都放入S1的数组中,数组S1的元素个数是|S1|个;把这个数组中比m*大的都放入S2的数组中,数组S2的元素个数是|S2|个。 若k<|S1|,则原问题归纳为在数组S1中找第k小的子问题。 若k=|S1|+1,则m就是要找的第k小元素。 若k>|S1|+1,则原问题归纳为在数组S2中找第n−|S1|−1小的子问题。 3.设计 select(s,k) 输入:n个数的数组.
2021-04-25 15:37:58
191
原创 算法分析第五次作业
1、问题 求二维平面两点之间的最短距离。(最近对问题)。 2、解析 Struct node对点结构进行定义,结构数组进行保存。解法一(蛮力法):对每两个点之间进行距离计算,筛选出距离最近的两个点。解法二(分治法):进行对很坐标x排序将所有点分为左右两部分,不断进行递归求得最短距离递归出口当只有两个或者三个点在子集合里需要特别注意的是,在center-d,center+d范围内有可能距离小于最短距离d,对纵坐标y排序,排除特殊情况。 3、设计 struct node { Int x,y; }; bool cm
2021-04-19 15:17:31
122
原创 作业四
实验报告 课程名称:《算法分析与设计》 实验日期: 2021年 3月 29日 至 2021 年 3 月 30 日 学生姓名: 黎坤坤 所在班级: 计算机194 学号: 2019212212158 实验名称: 二分归并排序 实验地点: 勤园13-218 同组人员: 无 问题 二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k 解析 御用二分排序将排序的数组分成两个数组,递归相同的算法,将两个子数组继续排序,最后将数组排序 设计 void mergesort(first , last)
2021-04-12 21:28:17
104
原创 第三次算法作业
写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在 T的下标j;如果x不在T中,输出j=0. 答: 顺序法查找:从1到n逐个与x比较,如果数组t中存在x,则查找成功输出x的下标,如果查找不成功输出j=0 二分查找,将x与T[n/2]比较,如果T[n/2]大于x则,在n/2的右半部分查找,如果小于,则在左半部分查找,若x==[n/2],查找结束 分析: 顺序查找:时间复杂度:O(n) 二分查找:时间复杂度:0(log n) 代码` int f(int *a,int n,int
2021-03-28 19:32:01
104
原创 2021-03-22
从任意节点i到任意节点j的最短路径不外乎2种可能: (1)是直接从i到j, (2)是从i经过若干个节点k到j。 因此,我们假设dis(i,j)为节点u到节点v的最短路径的距离,对于每一个节点k,我们检查dis(i,k) + dis(k, j) < dis(i,j)是否成立,如果成立,证明从i到k再到j的路径比i直接到j的路径短,我们便设置dis(i,j) = dis(i,k) + dis(k,j),这样一来,当我们遍历完所有节点k,dis(i,j)中记录的便是i到j的最短路径的距离。 解析 给定一个.
2021-03-22 15:23:46
195
原创 最小生成树的prim算法和kruskal算法
Prim 算法思想: 从任意一顶点 v0 开始选择其最近顶点 v1 构成树 T1,再连接与 T1 最近顶点 v2 构成树 T2, 如此重复直到所有顶点均在所构成树中为止。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树。 构造网的最小生成树必须解决下面两个问题: 1、尽可能选取权值小的边,但不能构成回路; 2、选取n-1条恰当的边以连通n个顶点; MST性质:假设G=(V,E)是一个
2021-03-15 16:15:32
477
原创 java多态
1.多态定义: 1、多态是继封装、继承之后,面向对象的第三大特性。 2、多态意义的理解: Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。 3.多态体现为父类引用变量可以指向子类对象。 4.前提条件:必须有子父类关系。 注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。 5.多态的定义与使用格式 定义格式:父类类型 变量名=new 子类类型(); 2.多态中的组成的特点 多态
2021-01-04 18:08:20
150
原创 java抽象类
一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。 而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明 示例: public abst
2021-01-04 18:00:41
300
原创 环境搭建
一、JDK安装与配置 1、下载JDK8u201 链接:https://www.oracle.com/java/technologies/javase-downloads.html 二、下载之后安装 一直点下一步,最好修改一下安装路径 三、配置环境变量 1、右键我的电脑—属性----高级系统设置就会看到下面的界面: 2、点开高级系统配置: 3、再点开环境变量,新建系统变量JAVA_HOME,变量值为安装JDK的地址: 4、编辑Path变量: 到此java的环境搭建就完成了 ...
2021-01-04 16:50:30
105
原创 正则表达式
## 正则表达式 **首先我们需要知道什么是正则表达式**: 1、正则表达式就是用于描述查找符合某些复杂规则的字符串之类(在编写处理字符串的程序或网页时)的语法;正则表达式不能独立使用,它只是一种用来定义字符串的规则模式,必须在相应的正则表达式函数中应用,才能实现对字符串的匹配、查找、替换及分割等操作。正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。 2、正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合, 组成一个“规则字符串”,
2021-01-01 20:31:50
204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅