- 博客(17)
- 收藏
- 关注
原创 图的m着色问题
1.问题2.解析3.设计if (c > n) {//如果涂的数目大于n,则表示已经成功涂成 输出color数组; return;}for (int i = 1; i <= m; i++) { colorp[c] = i; if (点c可以涂) { draw(c + 1); } color[c] = 0;//回溯}4.分析5.源码图的m着色问题...
2021-06-23 03:18:13
168
原创 最优前缀编码
1.问题2.解析3.设计n<-|C|Q<-C //按频率递增构成队列 Qfor i<-1 to n-1 do z<-Allocate-Node() z.left<-Q中最小元 //取出Q中最小元作为z的左儿子 z.right<-Q中最小元 //取出Q中最小元作为z的右儿子 f(z)<-f(x)+f(y) Insert(Q,z)return Q4.分析时间复杂度O(nlog
2021-06-23 03:16:04
181
原创 10 装载问题
1.问题2.解析思路:轻者先装,直到再装任何集装箱将使轮船载重量超过C时停止。定理:对于任何正整数k,算法(轻者先装)对k个集装箱的实例得到最优解。证明:(数学归纳法)(1)k=1,只有1个集装箱,其重量小于C。任何装法都只有一种方式,因此都是最优解,因此轻者先装也是最优解。(2)归纳假设:假设算法对于规模为k的输入都能得到最优解。考虑规模为k+1的输入,N={1,2,…,k+1},W={w1,w2,…,wk+1}是集装箱重量,w1≤w2≤…≤wk+1。从N中拿掉最轻的集装箱,得到k规模的
2021-06-23 03:14:05
212
原创 7投资问题
1.问题一般性描述:设m元钱,n项投资,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,…,n问:如何分配这m元钱,使得投资的总效益最高?组合优化问题:假设分配给第i个项目的钱数是Xi,问题描述为:目标函数 max{f1(x1)+f2(x2)+…+fn(xn)}约束条件 x1+x2+…+xn=m,xi∈N实例:投资x万元效益f1(x)万元f2(x)f3(x)f4(x)00000111022021251021
2021-06-23 03:11:45
338
原创 9-2背包问题
1.问题一个旅者准备随身携带一个背包。可以放入背包的物品有n种,物品j的重量和价值分别为wj,vj,j=1,2,……,n如果背包的最大重量限制是b,怎么选择放入背包物品以使得背包的价值最大。2.解析3.设计4.分析时间复杂度O(n^2)5.源码背包问题源码...
2021-06-23 03:10:36
68
原创 LSC算法
1.问题给定序列X=<x_1,x_2,…,x_m>Y=<y_1,y_2,…,y_j>求X和Y的最长公共子序列(LCS)2.解析X=<x1,x2,x3,x4…,xi>Y=<y1,y2,y3,y4…,yi>如果Z=<z1,z2,z3,z4…,zk>是他们的最长公共子序列则:(1)xi = yi,则zk= xi= yj 且 Z(k-1)是X(i-1)和Y(j-1)的最长公共子序列(2)xi≠yi 且 zk≠xi,则Zk是X(i-1)
2021-06-23 03:08:17
1319
原创 矩阵链乘法
1.问题设A1,A2,…An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,…,Pn>给出给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小例如P=<10,20,30,50>,则A1:10×20,A2:20×30,A3:30×50(1) (A1A2)A3:10×20×30+10×30×50=21000(2)A1(A2A3):10×20×50+20×30×50=400002.解析蛮力法枚举所有可能的乘法次序,针对每种次序
2021-06-23 03:05:09
164
原创 选第k小元素:特定分治策略
1.问题n(1≤n≤100)个正整数(无序的)中,找出第k(k≤n)小的数。注意,第k小的数意味着从小到大排在第k位置的数。2.解析3.设计 Select(S,k)输入:n个数的数组S,正整数k输出:S中的第k小元素 将S划分成5个一组,共ceil(n/5)个组 每组找一个中位数,把这些中位数放到集合M中 m*<-Select(M,ceil(|M|/2)) 把A和D中的每个元素与m*比较,小的构成S1,大的构成S2 S1<-S1∪C;S2<-S2∪B; if
2021-06-23 02:53:08
288
原创 最近对问题
1.问题要求在一个包含n个点的集合中,找出距离最近的两个点。2.解析1、划分子问题:将点化为相等的两份,先将点按照横坐标的大小进行排序,然后求出中间值,将其分为两部分。2、求解子问题:递归的对两个子问题进行求解:①先求出左半部分的最短距离(第一对点)②再求出右半部分的最短距离(第二对点)③求得中间部分的最短距离(第三对点)3、比较三个值中最小的一个,将其返回。4、第三对点的求解:先求得第一对点和第二对点,得出两者最小值d。若在PL中存在一个点s,则PR 中需要计算距离点的y轴坐
2021-06-23 02:48:39
148
原创 二分归序排序
1.问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k2.解析二分归并排序是一种分治算法,就是先将一个数组不断通过二分拆解为最小单元为止,然后将拆解出来的数两两组合排序合并,通过不断的循环最后得到一个排序好的数组。3.设计void Merge(int A[],int low, int mid, int high){ int x=low, y=low, z=mid+1; while (x<=mid&&z<=high) { if (
2021-06-23 02:44:46
142
原创 JAVA——多态
一、多态概述:多态是继封装、继承之后,面向对象的第三大特性。多态就是对同一个对象,在不同时刻表现出来的不同形态。多态现实意义理解:现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。 Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。多态意味着父类引用变量可以指向子类对象。多态存在的3个前提条件:1、要有继承2、要有重写3、
2021-01-05 02:03:04
148
原创 JAVA——抽象类和接口
一、抽象类在继承的层次结构中,每个新子类都使类变得越来越明确和具体。如果从一个子类追溯到父类,类就会变得更通用、更加不明确。类的设计应该确保父类包含它的子类的共同特征。有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类称为抽象类(abstract class)。abstract修饰符:1.abstract修饰的类为抽象类,此类不能有对象,(无法对此类进行实例化,说白了就是不能new);2.abstract修饰的方法为抽象方法,此方法不能有方法体(就是什么内容不能有);关于抽象类
2021-01-05 00:08:30
104
原创 JAVA——正则表达式:字符串处理神器
正则表达式是处理字符串的强大的工具,它不是Java的特性,前端的JavaScript等也有。但是相比于其他老牌的高级语言,如C/C++,这是Java比他们独特的地方。一、正则表达式的概念:理解可得:正则表达式其实就是一个字符串,这个字符串是按照一定的规则进行组合得来的,而这个规则是创始者定义的。这个“规则字符串”用来表达对字符串(这里的字符串是我们自己的)的一种过滤逻辑。也就是给定的字符串与正则表达式是否匹配。举个例子:图上这个正则表达式是一个手机号码的表达式,比如我们写了一个字符串130236
2021-01-04 22:52:23
400
原创 JAVA——eclipse环境搭建、上传GitHub代码
一、eclipse环境搭建1、先下载java开发环境:eclipse,此时eclipse是打不开的,需要安装JDK(JAVA开发工具包)和JRE(JAVA运行环境)。2、JRE最好跟jdk在一个文件夹下,可以提前建名为jre的文件夹也可以选择路径时新建(注:jre的安装路径必须是空文件夹)。3、配置JDK的环境变量,步骤如下:右击我的电脑->属性->高级环境设置->环境变量新建一个JAVA_HOME,配置JDK的安装路径然后是Path的配置,%JAVA_HOME%\bi
2021-01-04 21:18:46
162
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人