自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第五章作业

在探索下一个位置之前,我们需要标记下一个位置为已访问,并根据移动的方向是否转弯来更新转弯次数。如果下一个位置在迷宫范围内,并且未被访问过,并且不是封闭房间,则可以继续探索下一个位置。,如果它未被访问过,并且满足油压要求和距离要求,则更新最小生成树距离。在循环中,我们遍历所有的形状和颜色,并选择一个未被使用的形状和颜色。最后,在算法结束后,我们统计最小生成树中的顶点数量,即增压器的数量。在循环中,我们遍历所有的方向,并计算下一个位置的坐标。,则需要回溯,取消对下一个位置的标记,并恢复转弯次数。

2023-11-30 19:56:38 381

原创 第四章作业

题目要求在给定的一辆汽车行驶过程中,在尽可能少的加油次数下到达目的地。如果某个距离大于汽车的续航里程n,说明无法到达下一个加油站,需要在当前位置加油,并将count加1。该问题要求在实直线上寻找最少数量的固定长度闭区间,以覆盖给定的n个点。该问题要求在给定的一系列数中执行特定操作,最终得到的数列中的极差。将新增的闭区间起点设为当前点,终点设为当前点加上闭区间长度k。2、读取k+1个整数,表示相邻两个加油站之间的距离。4、初始化变量i为0,表示当前处理的点的索引。7、输出count,表示最少的闭区间数量。

2023-11-30 19:47:54 333

原创 哈夫曼树及其应用

在哈夫曼树中,从根节点到每个叶子节点的路径上的边可以表示编码,路径左边的边表示0,右边的边表示1。利用哈夫曼树进行数据压缩时,将原始数据中的每个字符或数据片段替换为相应的编码,可以大大减小数据的存储空间。它通过对数据中字符出现的频率进行分析,将频率较高的字符用较短的编码表示,而频率较低的字符用较长的编码表示,从而实现对数据的高效压缩。选择两个频率最低的节点,创建一个新的父节点,并将这两个节点作为子节点连接到父节点上。4、重复步骤3,直到所有的节点都连接在一起,形成一个完整的哈夫曼树。

2023-11-30 19:40:38 375

原创 算法作业——0-1背包问题

若选择放入背包,则背包的总价值应为前i-1个物品放入容量为j-w[i]的背包时的最大总价值加上物品i的价值v[i];将背包的容量以及物品的数量作为状态变量进行建模,可以定义一个二维数组dp[i][j]来表示在前i个物品中,背包容量为j时的最大总价值。0-1背包问题是指在给定一组物品和一个背包的容量下,如何选择物品放入背包,使得物品的总价值最大,同时保证总重量不超过背包的容量。当背包容量为0或者没有物品可选择时,最大总价值为0,因此可以将dp[i][0]和dp[0][j]的初始值设为0。

2023-11-30 19:24:50 419

原创 动态规划——图像压缩

对于 dp[1][1],最优编码值等于当前灰度值减去上方像素点和左方像素点最小的编码值:dp[1][1] = 132 - min(5, -5) = 137。对于 dp[2][1],最优编码值等于当前灰度值减去上方像素点和左方像素点最小的编码值:dp[2][1] = 138 - min(-5, 4) = 143。对于 dp[2][2],最优编码值等于当前灰度值减去上方像素点和左方像素点最小的编码值:dp[2][2] = 142 - min(143, 4) = -1。这个矩阵代表了每个像素点的最优编码值。

2023-11-30 19:21:16 475

原创 算法学习——线性选择

分割后左边部分为{3, 1, 4, 2, 5},右边部分为{7, 6, 8, 10, 9}。由于左边部分的大小为1,且k=1,所以我们需要返回左边部分中的最小值4作为第5小的元素。如果k大于左边部分的元素个数加上右边部分的中位数个数,则递归调用线性选择算法,在右边部分中查找第k-leftCount-middleCount小元素。分别为{3, 1, 4, 2, 5}和{7, 6, 8, 10, 9}。假设我们要在数组A={3, 1, 4, 2, 5, 7, 6, 8, 10, 9}中查找第5小的元素。

2023-10-24 19:05:23 246

原创 算法学习———三角剖分

三角剖分是将一个多边形划分成若干个三角形的过程。在计算机图形学和计算几何中,三角剖分是一种重要的技术,广泛应用于计算机图形学、地理信息系统、有限元分析等领域。三角剖分的目的是将多边形划分为若干个不重叠的三角形,以便进行计算和处理。三角剖分可以用于计算多边形的面积、周长、重心、外接圆、内切圆等属性,也可以用于进行网格生成、形状匹配、形态分析等操作。

2023-10-24 18:51:56 467

原创 算法学习——最邻近点对

当涉及到计算几何学中的问题时,最邻近点对(nearest neighbor pair)是一个经典的问题。它要求在给定的点集中找到距离最近的两个点。本文将介绍如何使用C++语言解决这个问题。

2023-10-24 18:41:23 180

原创 算法学习记录——归并排序(merge sort)

对已经分解得到的子数组进行合并,将两个已排序的子数组合并为一个有序数组。合并过程是通过比较两个子数组的元素,将较小的元素放入新的数组中,并从相应的子数组中移除该元素。是一种经典的排序算法,它通过将待排序的数组递归地分解成较小的子数组,然后再将这些子数组合并、排序,最终得到完全有序的数组。归并排序的核心思想是分治法,即将问题不断地分解为更小的子问题,然后将子问题的解进行合并,最终得到原始问题的解。:重复上述的分解和合并过程,直到所有的子数组只包含一个元素,并且所有的子数组都被合并成一个有序数组。

2023-09-28 17:43:27 106

原创 算法学习记录——快速排序(Quick sort)

快速排序(Quick Sort)是一种分治法(Divide and Conquer)的排序算法。它通过选择一个基准元素,将数组划分成左右两个子数组,其中左边子数组的元素都小于等于基准元素,右边子数组的元素都大于基准元素。然后递归地对左右子数组进行排序,最终得到一个有序数组。选择一个基准元素,通常选择数组的最后一个元素。设定两个指针,一个指向数组的起始位置,一个指向数组的末尾位置。从左指针开始向右遍历数组,直到找到第一个大于基准元素的元素。

2023-09-28 17:34:04 93

原创 算法学习记录——汉诺塔问题

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。不论白天黑夜,总有一个僧侣在移动这些圆盘,一次只移动一个,小的圆盘必须在大的上面。

2023-09-13 11:51:40 149 1

原创 算法分析与设计学习记录——递归实现全排列

如,{1,2,3},当在处理2开头的元素时,将1和2进行交换得到{2,1,3},然后同样操作处理{1,3};处理完2开头的全部排列后,递归结束,回到排列{2,1,3},在交换1和2,回到{1,2,3}这个原始状态。然后进入处理3的环节,交换1和3,进行同样的操作。先固定第一位元素后,将剩余的n-1个元素视为一个新的排列L1,然后对L1进行新的全排列操作,固定L1的第一位元素,进行到一个新的排列Ln时,Ln为空,即为递归出口。在上一级中,L2不为∅,则对于L1,把固定的元素2与L2中的元素3交换,以此类推。

2023-09-05 21:26:23 32

空空如也

空空如也

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

TA关注的人

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