自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最长公共子序列

1.问题LCS:一个序列 Z ,如果分别是两个已知序列的子序列,且是所有符合此条件序列中最长的,则 Z 称为已知序列的最长公共子序列。给定序列X=<x1,x2,…,xm>Y=<y1,y2,…,yn>求X和Y的最长公共子序列Z。2.解析3.设计4.分析时间复杂度:O(mn)...

2021-05-16 13:18:50 113

原创 矩阵链乘法(动态规划)

1、问题设A1,A2,...,An为n个矩阵的序列,其中Ai为P(i-1)×Pi阶矩阵,这个矩阵链的输入用P=<P0,P1,...,Pn>向量给出。 给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。 2、解析3、设计算法MatrixChain(n, p[], FILE* fo)//输入:n表示矩阵个数,p[]表示矩阵链,fo表示文件//输出:最终数据保存在文件中m[][]←{0}s[][]←{0}for r=2,3,...,n for i=1,2

2021-05-02 09:59:15 278

原创 投资问题(动态规划)

1.问题 设m万元钱,n项投资,函数表示将x万元投入第i项项目所产生的 效益,i=1,2,…,n. 问:如何分配这m元钱,使得投资的总效益最高?2.解析目标函数:max{f1(x1)+f2(x2)+…+fn(xn)}约束条件:x1+x2+…+xn=m, xi属于自然数3.设计for k=1,2,...,n for x=1,2,...,m F[k][x]=0 X[k][x]=0 for xk=0,1,...,x

2021-05-01 14:43:21 116

原创 第k小元素-特定分治策略

1.问题设array是n个元素的集合,从array中选取第k小的元素,其中1<=k<=n.这里的第k小元素是指,当array按从小到大排好序之后,排在第k个位置的元素。2.解析特定分治策略参考了快速排序的思想:从集合array中选出一个参考元素m,比m小的数放到m的前面(集合s1),比m大的数放到m的后面(集合s2)。若s1的个数+1恰好等于k(|s1|+1=k),那么集合array的第k小的数就是m。若不等,再用递归的思想从s1或s2中找出该第k小的元素。3.设计算法Bubbl

2021-04-23 13:30:18 160

原创 最近点对问题(分治法)

1.问题对于平面上的n个点,请找出距离最近的两点,给出这两点的距离。2.解析当我们有两个点的坐标时,我们很容易算出这两点的距离。但是当点的数量一旦多起来且我们想找出这些点的最近距离时,我们就需要以一个点为中心,求出这个点到其他点的距离,然后再以下一个点为中心,依次遍历这些点,找出最近距离。这个做法就是解这个问题的蛮力法,但是这个算法的时间复杂度高达O(n^2),我们可以使用分治策略解决这个问题,这会使时间复杂度下降到O(nlogn)。为了更好地接受这个问题的分治解法,我们可以先从一维开始思考。假设

2021-04-18 11:14:34 934

原创 归并排序(递归)

1.问题对n个不同的数构成的数组A[1..n]进行排序,其中n=2^k2.解析归并排序运用了运用分治策略的思想。分而治之,将一个规模大的问题分解成多个规模小的问题,从而简化解题难度。归并排序分成三个基本步骤:①对数组前半部分进行归并排序②对数组后半部分进行归并排序③合并数组前半部分和后半部分依次将重复上述步骤。从以上基本步骤可以看出,这是运用了递归而不是循环,每次递归都会将一个数组分成两份,经过多次递归就可以将一个长度为n的数组分成n个只有一个元素的数组,然后再两个两个地将数组合并,最后

2021-03-30 13:46:13 82

原创 顺序查找和二分查找

1.问题查找是在大量的信息中寻找一个特定的信息元素。题目:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中, 输出j=0.按实验模板编写,“分析”部分仅给出复杂度结果即可。2.解析顺序查找:按照序列原有顺序对数组进行遍历比较查询的基本查找算法。顺序查找不需要事先对数组进行排序。二分查找:一种查找效率较高的算法。但二分查找要求数组是有序的。以升序为例,先将查找关键字与数组中间位置关键字进行比较,若相等则查找结束;若小于中间位置关键字,则查找数组前半部分;若

2021-03-23 22:49:21 898

原创 最短路径(Floyd算法和Dijkstra算法)

1、问题寻找图中两结点之间的最短路径。2、解析Floyd算法:错误思想:理解错了弗洛伊德算法三个for的功能:前两个for是为了固定两个顶点,第三个for在两顶点间找中断点以寻找最小路径。但其实这样找到的最短路径可能是不准确的,因为它只是在(一条边的权值,两条边的权值和)之间进行选择,而两点的最短路径包含的边可能在两条以上。正确理解三个for:第一个for固定一个中断点v2,后两个for依次遍历图里的任意两个顶点v1和v3,以寻找v1和v3之间的最短路径(<v1,v3>,<v1

2021-03-21 14:56:33 301

原创 最小生成树(kruskal算法和Prim算法)

1.问题[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]最小生成树:一个有 n 个结点连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。2.解析[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]prim算法:核心思想:让一颗小树长大。以下说明默认图是连通图。①随机选择一点v加入V(初始时为空),并设一变量ans记录已选中的权值和②找到图中权值最小的边<v1,v2>,要求v1存在

2021-03-14 23:04:24 208

原创 多态

在java中,接口的多种不同的实现方法即为多态。多态指同一个实体同时具有多种形式。就是指程序中定义的引用发出的方法调用在编程时并不确定的,而是在程序运行期间才确定,即一个引用变量发出的方法调用的到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为编译器会自动找出合适的对象来执行操作,这种现象又称为多态性。实现多态的手段叫做动态绑定。面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。它是面向对象程序(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,

2021-01-08 21:52:59 58

原创 抽象类

有时候,一个父类设计得非常抽象,以至于它没有任何具体的实例。这样的类成为抽象类。抽象类除了不能实例化对象之外,类的其他功能依然存在,成员变量、成员方法的访问方式和普通类一样。抽象类及抽象方法使用abstract修饰符。抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。在UML图形记号中,抽象类和抽象方法的名字用斜体表示。抽象类的子类必须重写父类的所有抽象方法,如果没有,那子类也必须是抽象的。抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类。抽象类的作用给子类定义一个模板,避免

2021-01-08 20:13:53 124 1

原创 正则表达式

正则表达式(匹配)正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。给定一个正则表达式和另一个字符串,我们可以达到如下的目的:1、给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);2、可以通过正则表达式,从字符串中获取我们想要的特定部分。(正则表达式具有查找、替换和拆分字符串的功能)注意:正则表达式是一个字符串,用来描述匹配一个字符串集合的模式。使用正则表达式进行匹配时,需要用到String类的matches方法。替换和拆分字符串用到String类的replaceAll、

2021-01-08 20:01:35 76

原创 Java环境搭建(ecliplse)

Java环境搭建(ecliplse)①安装到官网安装ecliplse并安装jdk1.8②打开eclipse,点击Browse,选择工作区(即保存代码的位置)③创建文件:点击左上角“File”,将光标移到“New”,点击“Project”。然后会跳出下面的框框,点击一下“Java Project”,再点击“Next”然后会跳出下面的框,在"Project name"输入文件名,“Project layout"选择第一项,点击“Finish”④创建类:在你创建的文件夹上点击右键,光标移到

2021-01-08 19:22:55 220 1

空空如也

空空如也

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

TA关注的人

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