
算法设计
文章平均质量分 93
JK_2966YQ
这个作者很懒,什么都没留下…
展开
-
01背包及其推广 实验报告(含代码)
有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大——这就是标准的背包问题。每一件物品只有两个状态,取或者不取,用0和1表示,就成了01背包。解决背包问题的基本思路分为三步:(这里不考虑暴力解法)具体实例如下。创建状态变量dp[i][j],表示前i件物品放入容量为j的背包所能取到的最大价值。原创 2024-07-09 22:17:37 · 981 阅读 · 0 评论 -
零钱系统(基于贪心算法)实验报告
假设零钱系统的币值是{1,p,p^2,...,p^n},p>1,且每个钱币的重量都等于1,设计一个最坏情况下时间复杂度最低的算法,使得对任何钱数y,该算法得到的零钱个数最少,说明算法的主要设计思想,证明它的正确性,并给出最坏情况下的时间复杂度。原创 2024-06-22 20:31:32 · 872 阅读 · 0 评论 -
二维最接近点对问题 代码+实验报告
在本次实验中,通过研究二维最接近点对距离问题,我深入理解了分治算法的思想,并对其在实际问题中的应用有了更深入的认识。首先,分治算法是一种非常重要且广泛应用的算法思想,它将一个大问题划分 为多个小问题,然后递归地解决这些小问题,并将它们的解合并起来得到最终的结果。在二维最接近点对距离问题中,我将问题划分为两个子问题,分别在左右两个子集中求解最接近点对距离,然后通过合并步骤来求解跨越两个子集 的最接近点对距离。其次,分治算法的关键在于如何将问题划分为更小的子问题,以及如何将子问题的解合并起来。原创 2024-06-22 20:14:41 · 966 阅读 · 0 评论 -
topK问题程序及实验报告
本次实验以分治算法为核心思想,实现了找出第k小元素的代码。随后,将分治算法与一般选择性算法进行对比,并分别比较了冒泡排序、堆排序、快速排序等排序方式,通过程序输出运行时间,具体准确地进行时间复杂度比较。首先,冒泡排序在数据量增大时算法效率明显下降,而即使是效率较高的快速排序与堆排序,在处理相同较大数据量时效率仍不及分治选择算法,后者平均节约7~8倍运行时间,得出结论:分治算法在面对较大数据量时是具有时间复杂度上的优势的。原创 2024-06-22 16:17:51 · 845 阅读 · 0 评论