算法应用
算法应用
攻城狮炭烤策划
略懂略懂
展开
-
C++动态规划算法简析
给定一个重量数组v和价值数组w,以及一个背包的最大承重量m,每个物品只能用一次,求在不超过背包最大承重量的前提下,能够装入背包的物品的最大总价值。再比如Floyd算法,首先求解只能经过一个结点的情况,再此基础上,再计算经过两个节点的情况,以此类推,最终找到多源最短路解。比如01背包问题,首先求只装入一个物品时的最大价值,再此基础再求装入两个物品,最终求得计入所有物品时的最大价值。动态规划运用分治的思想,将大问题拆解成许多小问题。原创 2023-11-05 11:08:44 · 349 阅读 · 0 评论 -
c++堆排序简版
堆排序是一种利用堆这种数据结构所设计的排序算法。堆是一个特殊的树形数据结构,通常用于实现优先队列。堆有两个主要的类型:最大堆和最小堆。在最大堆中,父节点的值总是大于或等于其子节点的值;而在最小堆中,父节点的值总是小于或等于其子节点的值。堆排序主要利用最大堆进行排序。总的来说,堆排序是一种高效的排序算法,它的时间复杂度为O(n log n),其中n是待排序元素的数量。然而,它的空间复杂度较高,为O(1),因为不需要额外的存储空间来进行排序。原创 2023-10-23 16:33:14 · 143 阅读 · 0 评论 -
JavaScript表达式求值算法(栈操作)
【代码】表达式求值算法(栈操作)原创 2023-06-05 11:53:13 · 73 阅读 · 0 评论 -
前缀和算法
查找数组中满足某个条件的子数组:通过构建前缀和数组,可以在O(n)的时间内找到满足条件的连续子数组,例如最长连续子数组的和等于k。处理多维数组:前缀和算法也可以应用于多维数组的处理。通过预处理出每个维度的前缀和数组,可以在O(1)的时间内处理出任意区域的和。求数组中某个区间的和:通过预处理前缀和数组,可以在O(1)的时间内计算出任意区间的和,而不需要每次重新遍历一遍数组。前缀和算法可以用于高效地计算连续子数组的和。一般二维前缀和已经够用了,但拓展一下思维,三维前缀和怎么实现。原创 2023-04-22 18:05:36 · 121 阅读 · 0 评论 -
高精度加减乘除算法
乘除的思想方式与加减法不同,同样我们在草稿纸计算乘除法是将乘数或除数当做一个整体去跟另一个乘数或者被除数进行运算,因此乘数和除数是不能当做数字栈进行处理的。可以想想平常草稿纸上我们是怎么做加法计算,从最末位依次加到最前位,过十进一,那么实现思路有了。整数型无论多少位都不会出现计算错误,浮点型小数位十六位出现错误。long型可以实现18位整数的加减,第19位出现错误。long型可以实现9位整数的运算,10位出现错误。int型可以实现18位运算,19位出现错误。可以实现15位的运算,16位出现错误。原创 2023-04-22 17:17:35 · 94 阅读 · 0 评论