自定义博客皮肤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)
  • 收藏
  • 关注

原创 圆排序问题

问题给定n个大小不等的圆c1,c2,…,cn,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。解析设计算法:首先,需要一个函数来计算圆在当前圆排列中的横坐标,由l^2 sqrt((r1+r2)^ 2 - (r1-r2)^2),可推导出l = 2*sqrt(r1 *r2)。设计一个递归算法,当节点大于n时,算法搜索至叶节..

2020-06-16 18:27:57 614

原创 最长公共子序列算法

问题定义:设X和Z是两个序列,其中X=<x1,x2,…,xm>,Z=<z1,z2,…,zk>,如果存在X的元素构成的按下标严格排序递增序列<xi1,xi2,…,xik>,使得xij=zj,j=1,2,…,k,那么Z是X的子序列,Z含有的元素个数,称为子序列的长度。定义:设X和Y是两个序列,如果Z既是X的子序列,也是Y的子序列,则称Z是X和Y的公共子序列。问题:最长公共子序列问题,给定序列X=<x1,x2,…,xm>,Y=<y1,y2,…,yj&gt

2020-06-16 00:15:46 582

原创 图的m着色问题

问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。2. 解析通过回溯的方法,不断的为每一个节点着色,在前面n-1个节点都合法的着色之后,开始对第n个节点进行着色,这时候枚举可用的m个颜色,通过和第n个节点相邻的节点的颜色,来判断这个颜色是否合法,如果找到那么一种颜色使得第n个节点能够着色,那么说明m种颜色的方案是可行的。...

2020-06-15 23:49:37 153

原创 最优前缀编码

问题代码(码字):Q{001,00,010,11}表示字符a,b,c,d同一序列:0100001产生两种译码(产生歧义):01 00 001;010 00 01二元前缀码:任何字符的代码不能作为其他字符代码的前缀利用二元前缀码译码:从第一个字符开始依次读入每个字符(0或1),如果发现读到的字串与某个码字相等,就将这个子串译作对应的码字;然后从下一个字符开始继续这个个过程,直到读完输入的字符串为止。二元前缀编码存储:二叉树结构,每个字符作为树叶,对应这个字符的前缀码看作根到这片树叶的一条路径,每.

2020-06-15 23:48:49 415

原创 相容问题

问题有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。设S={1,2,…,n}为活动的集合,si和fi分别为活动i的开始和截止时间,i=1,2,…,n定义:活动i和j相容<==>si≥fj或sj≥fi,i≠j求S最大的两两相容的活动子集A。解析按结束时间来倒序排列,第一个结束时间最短,肯定是要加进去的,之后的几个,如果开始时间早于前一个的结束时间,则加入活动列表...

2020-06-15 23:47:34 133

原创 矩阵链乘法

思路:递归求解对于矩阵链乘法问题,所有对于1≤i≤j≤n确定Ai* A(i+1)…*Aj的最小代价括号方案作为子问题。令m[i,j]表示计算矩阵Aij所需要的标量乘法的次数最小值,则最优解就是计算A1n所需的最低代价就是m[1,n]递归算式:源码https://github.com/Atdios/helloworld/blob/master/%E7%9F%A9%E9%98%B5%E9%93%BE...

2020-05-25 23:54:48 145

原创 投资问题

思路:局部最优必然导致全局最优思路:创造两个概念,Fn(x)的值,代表当投资x元时,可以得到的最大金额m,Xn(x)的值,代表总投资x元,其中投资n产品a元。举例说明:源码https://github.com/Atdios/helloworld/blob/master/%E6%8A%95%E8%B5%84%E9%97%AE%E9%A2%98...

2020-05-25 23:53:54 139

原创 第k小

若指定一个中间值m,<=m的数集合为s1,大于m的数集合为s2,假如能够满足s1的长度+1=k,那么就能认为m是第k小的数。思路,整列数字按每5个一组分开,每组都进行排序,再按每组的中位数排序,按中位数排序的时候,每一组的都要对换位置。根据每个组的中间值,对数组进行划分(即比其小的放左侧,比其大的放右侧),划分完成后,中位的中值m左下方的所有值都会小于m,右上方的值都会大于m。利用这个性质,判断要找的第k小的数在哪一侧或是否是该中间值本身,对于在一侧的情况,对该侧进行递归,同样找中间值再分,再找中间

2020-05-25 23:52:36 181

原创 最近对

分治思路:将点阵分成两部分,那么这两部分的最短距离为dl(左边所有点中最短距离),dr(右边所有点中最短距离),ds(左右各一个点情况下的最短距离)三种距离下的最短距离。1:当单边的点数小于等于三个时,可以直接得出最短距离,单边的点数个数可以通过下标计算可得,所有需要先按x轴的坐标来给点排序。2:当左右单边得出最短距离后,那么左右一个小整体的最短距离只有三种情况,左边的最短和右边的最短,和左右各有一个点的最短。左右的最短距离是已知的,但是左右各一个点的情况只是有可能存在的。所以需要筛选点数。首先,设

2020-05-25 23:51:53 146

原创 二分排序

源码https://github.com/Atdios/helloworld/blob/master/%E4%BA%8C%E5%88%86%E6%8E%92%E5%BA%8F

2020-05-25 23:51:01 424

原创 二分排序+顺序排序

顺序查找:顺序查找(线性查找):从列表中查找指定的元素定义:从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表最后一个元素为止二分查找法:又叫折半查找,从有序列表(必须为有序)的初始候选区,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。(仅当列表为有序的时候,二分查找才管用)源码https://github.com/Atdios/helloworld/blob/master/%E9%A1%BA%E5%BA%8F%2B%E4%BA%8C%E5%88%86...

2020-05-25 23:49:26 143

原创 迪杰斯特拉算法和弗洛伊德算法

1.迪杰斯特拉算法迪杰斯特拉算法是一个单源的求最短路径,从一个顶点出发,Dijkstra算法只能求一个顶点到其他点的最短距离而不能任意两点。迪杰斯特拉需要从一个顶点开始,设此顶点为A,初始化后,他与相邻的点距离即为初始的边的权值,与不相邻的点的距离为无穷大(即使A与此点能连通,但不是相邻点,所以初始化的距离为无穷大)迪杰斯特拉算法原理:1.从顶点A开始遍历,在图中找到一个满足A->v...

2020-03-10 19:33:40 7095

原创 prim算法和kruskal算法

2020-03-03 19:01:20 133

空空如也

空空如也

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

TA关注的人

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