自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图像压缩算法实现(动态规划)

【代码】图像压缩算法实现(动态规划)

2023-11-28 17:49:56 459

原创 哈夫曼树及其应用

本文介绍了哈夫曼树的原理、构建过程以及在数据压缩中的应用。哈夫曼树通过构建最优的前缀编码方式,实现了数据的高效压缩和解压缩。在实际应用中,我们可以利用哈夫曼编码算法对数据进行压缩,从而达到节省存储空间和提高传输效率的目的。

2023-11-27 17:21:06 570 1

原创 算法课第五章(回溯)课后习题

在DFS函数中,首先检查当前位置是否为朱丽叶的位置,如果是,则检查所有房间是否都被访问过,如果是,则返回true;创建一个m×n的二维数组maze来表示迷宫,其中0表示封闭的房间,1表示未封闭的房间。在每个方向上,如果下一个位置是未封闭的房间且未被访问过,递归调用DFS函数,并根据情况更新转弯次数。如果当前位置不是朱丽叶的位置,将当前位置标记为已访问,并遍历8个方向进行递归搜索。在递归调用结束后,将当前位置标记为未访问,恢复转弯次数,返回上一层。调用DFS函数,传入罗密欧的起始位置坐标和朱丽叶的位置坐标。

2023-11-17 11:16:04 397

原创 算法课第四章(贪心)课后习题

当累计距离超过了n时,表示无法到达下一个加油站,这时我们将当前加油站作为加油点,并将累计距离重置为0,继续下一轮的行驶。最后,统计加油的次数即可。【数列极差】问题描述:在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。然后,我们将新的闭区间的起始位置设置为当前点的位置,并继续向右寻找下一个需要覆盖的点。

2023-11-16 21:24:28 149 1

原创 使用二维动态规划解决背包问题

weight[i]

2023-11-02 21:37:04 465 1

原创 分治递归--线性时间选择算法及其实现

在计算机科学中,找到数组中第k个最小元素是一个常见的问题。常规的做法是对数组进行排序,然后取第k个元素作为结果。然而,排序整个数组的时间复杂度为。

2023-10-18 19:46:24 739 1

原创 动态规划-凸多边形最优三角形(权值和)

给定一个具有N个顶点的多边形,每个顶点都有一个权值。我们的目标是将该多边形划分为若干个不相交的凸三角形,并使这些凸三角形的权值和最小。

2023-10-17 21:24:54 225

原创 分治递归--二维最近点对问题

如果点的个数小于等于1个,则返回一个较大的默认值表示不存在最近的点对。然后,根据递归基本情况判断点的个数,如果只有2个点,则直接计算这两个点之间的距离。如果点的个数大于2个,则我们将点集分割为两部分,并对左右两部分分别递归调用 findClosestPairDistance 函数,得到左右子集的最近点距离。我们找到左右子集的最小距离,并将其作为初始的最小距离。历遍所有的点,并将横坐标与中线横坐标的距离小于最小距离的点放入一个临时的点集 stripPoints 中。最后,我们返回最小的距离作为结果。

2023-09-20 00:21:05 776 1

原创 递归分治--归并排序算法

归并排序(MergeSort)是一种基于“分治法”思想的排序算法,由冯·诺伊曼在1945年首次提出。它采用分治策略,将待排序序列划分为若干个子序列,递归地对每个子序列进行排序,然后将已排好序的子序列归并成一个新的有序序列。因此,归并排序之所以如此稳定可靠,是因为它可以保证在任何情况下都能产生正确的结果,并且时间复杂度为 O(nlogn)。

2023-09-20 00:11:59 239 1

原创 递归分治--快速排序算法QuickSort

快速排序(QuickSort)是一种基于“分治法”思想的排序算法,由英国计算机科学家 Tony Hoare 在1959年首次提出。其基本思想是通过选取一个轴点(基准值),将待排序序列划分为左右两个子序列,并通过递归地对子序列进行排序,最终实现整个序列有序。快速排序之所以如此高效,是因为它的平均时间复杂度为 O(nlogn),并且在实践中通常表现优于其他排序算法。

2023-09-20 00:07:15 234 1

原创 算法分析课之汉诺塔问题(Hanoi)递归思想

Hanoi 详解及尾递归优化

2023-09-07 22:47:11 912

原创 算法分析课之Perm全排列函数

全排列算法及不重复显示数值优化(递归)

2023-09-05 23:07:04 611 1

原创 (C++)有非循环双链表L,需按照按值查找Locate(L,x)的频度排序,查找频率越高,越靠近头结点。 L的 结点中包含一个频度域,每次查找后,频度域+1,并调整结点在L中的位置,然后返回指向该结点

有非循环双链表L,需按照按值查找Locate(L,x)的频度排序,查找频率越高,越靠近头结点。 L的 结点中包含一个频度域,每次查找后,频度域+1,并调整结点在L中的位置,然后返回指向该结点的指针。试实现Locate(L,x)函数。

2022-10-27 10:54:22 679

原创 (C++)假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表。

2022-10-27 10:51:11 1269

原创 C++ 已知单链表L=(a1,a2,a3,…an).设计一个算法实现单链表的重新排列,即得到L‘=(a1,an,a2,an-1,a3,an-2…..)

C++ 已知单链表L=(a1,a2,a3,…an).设计一个算法实现单链表的重新排列,即得到L‘=(a1,an,a2,an-1,a3,an-2…..)

2022-10-27 10:39:36 977 1

空空如也

空空如也

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

TA关注的人

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