自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈夫曼树算法

找出存放一串字符所需的最少的二进制编码,在编码中每个字符的出现次数不同,而每个字符都可以用唯一的前缀码表示,这时我们就需要考虑根据每个字符在字符串中出现的频率(即权重)来分配长度不同的前缀码,以使得编码的总长度最小。

2023-12-27 18:57:44 361 1

原创 0-1背包问题

我们定义数组m[i][j],它表示背包容量为j,可选择物品为i,i+1,…,n时0-1背包问题的最优值。即从后i个物品中选择,且总体积<=j的最优解,即物品总价最大。给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?该问题中对每件物品来说只有被选与未被选两种状态,故称做0-1背包问题。我们可以使用动态规划来解决,首先是确定状态方程。

2023-12-27 17:01:37 354 1

原创 图像压缩算法

因此需要用3位表示b[i],如果限制1<=l[i]<=255,则需要用8位表示l[i]。因此,第i个像素段所需的存储空间为l[i]*b[i]+11位。,pn},0≤pi≤255分割成m个连续段S1,S2,…第i个像素段Si中(1≤i≤m),有l[i]个像素,且该段中每个像素都只用b[i]位表示。设l[i],b[i],是{p1,p2,…显而易见,l[1],b[1]是{p1,…,pl[1]}的最优分段,且l[i],b[i],是{pl[1]+1,…,pn}的最优分段,使得依此分段所需的存储空间最少。

2023-12-27 16:49:58 460 1

原创 线性选择算法

最开始我们将所有的元素五个一组,分为⌈n/5⌉个组(最后剩余不够5个也算一组),然后对于每组无论采用哪种排序算法进行排序,找出其中位数,最后找出共⌈n/5⌉个中位数。递归调用该算法找出这⌈n/5⌉个中位数的中位数(如果⌈n/5⌉为偶数的话,就找出其较大的中位数)。即至少判断得到⌊n/10⌋*3个数字小于基准,⌊n/10⌋*3个数字大于基准。在给定线性集中有n个元素,要求找出这n个元素中第k(1<=k<=n)小的元素。有⌊n/10⌋*3>n/4 若需要对左下区域的元素进行递归,则复杂度为为T(n/4)。

2023-12-27 16:35:04 428 1

原创 回溯法习题

现有n种不同形状的宝石,每种n颗,共n*n颗。同一形状的n颗宝石分别具有n种不同的颜色c1,c2,…,cn中的一种颜色。欲将这n*n颗宝石排列成n行n列的一个方阵,使方阵中每一行和每一列的宝石都有n种不同的形状和n种不同颜色。是设计一个算法,计算出对于给定的n,有多少种不同的宝石排列方案。

2023-11-20 18:38:02 284 1

原创 贪心法习题

【数列极差】问题描述:在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。从所给出的n个点的最左端开始,以x1为第一个k区间的左端,看k区间能覆盖哪些点,不能全部覆盖,就需要再增加一个k区间,新增加的k区间以未被覆盖的点集中最左端的那个点为左端点,继续覆盖,以此类推,直到所有点全被覆盖。

2023-11-16 23:22:33 78 1

原创 凸多边形三角剖分

用多边形顶点的逆时针序列表示凸多边形,即P={v0,v1,…,vn-1表示具有n条边的凸多边形。若vi与vj是多边形上不相邻的2个顶点,则线段vivj称为多边形的一条弦。弦将多边形分割成2个多边形{vi,vi+1,…,vj和{vj,vj+1,…vi多边形的三角剖分是将多边形分割成互不相交的三角形的弦的集合T。给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。

2023-11-13 16:28:47 273

原创 算法设计与分析之最邻近点对问题

看见这个问题,我们第一时间能想出的最笨的方法就是:将每一个点与其他n-1个点的距离算出,找出最小距离,可以见得复杂度很高的,那还有什么办法呢?给定平面上的n个点,找出其中的一对点,使得在n个点组成的所有点对中,该点对的距离最小。中所有点,对排好序的点列作一次扫描,就可以找出所有最接近点对的候选者。因此,在分治法的合并步骤中最多只需要检查6×n/2=3n个候选者。的思想,用S中各点坐标的中位数来作分割点。由上面的分析可知,这种投影点最多只有。中的点,则由鸽舍原理易知至少有一个。点一起构成最接近点对候选者的。

2023-09-27 12:58:20 313 1

原创 合并排序与快速排序

将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。

2023-09-20 00:09:29 97 1

原创 算法设计与分析——汉诺塔问题

递归算法就是把问题大而化之,就像本题,我们把步骤分为前n-1个圆盘从A到B,再移动第n个圆盘从A到C,最后把剩余的n-1个圆盘从B到C移动,这样就可以一步步递归,从而把问题分解。当然,递归里面非常重要的前提是弄清楚边界,这道题里的边界就是最后n一步步减小最后到1时,只有一个圆盘的时候,只用移动一位,这个时候递归就结束了。

2023-09-08 00:20:15 541

原创 设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。

递归算法就是把问题大而化之,就像本题,求全排列的所有情况,我们的遍历方式就是依次把每个数放在第一位,然后剩余元素继续全排列,剩余元素求全排列继续这样遍历,这里就是几乎相同的操作了,这样就可以一步步递归,从而把问题分解。当然,递归里面非常重要的前提是弄清楚边界,这道题里的边界就是km,即头尾指针相等时,只剩一个元素了,这个时候递归就结束了。

2023-09-06 13:45:54 886

空空如也

空空如也

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

TA关注的人

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