算法设计与分析解答:硬币支付最少枚数与函数增长比较

需积分: 10 15 下载量 185 浏览量 更新于2024-09-09 收藏 266KB PDF 举报
本资源主要涉及两个算法设计与分析问题,一个是关于算法复杂度的比较,另一个是关于硬币找零的最优化方法。 首先,对于算法复杂度的排序部分,题目要求将给出的一系列函数按照增长速率的递增顺序进行排列。给出的函数包括: 1. f1(n) = O(n^2.5) 2. f2(n) = 2 * log(n) * 2 * log(log(n)) = n * log(n) = O(nlogn) 3. f3(n) = n^(1.75) = O(n^(1.75)) 4. f4(n) = 2^n = 4^n = O(4^n) 5. f5(n) = 3n = O(3n) 通过对这些函数的大O表示形式进行比较,可以得出它们的增长速度:f2 < f3 < f1 < f5 < f4。因此,按照增长速率的升序排列是f2、f3、f1、f5和f4。 接着,第二个问题是关于如何用最少的硬币支付金额x。有两个解决方案:贪心算法和动态规划方法。 1. 贪心算法思路是每次从给定的货币面值中选择最大的未超过当前剩余金额的部分,直到支付完所有费用。这个方法的优点是简单易实现,但不保证找到全局最优解。例如,对于面值3、5、9的硬币,贪心算法可能无法找到凑成10的最优组合,因为它可能先选择3元的硬币,然后无法再找到合适的组合。 2. 动态规划方法则通过建立一个二维数组来存储从面值p[0]到p[i]的硬币中凑成金额j+1所需的最少硬币数量。该方法通过考虑所有可能的组合,寻找每个状态下的最优解,确保了能够得到全局最小硬币数。虽然这种方法计算量较大,但能确保找到最佳解决方案,但前提是必须遍历所有可能的情况。 总结来说,这份资料包含了算法复杂度分析的基础概念,以及在实际问题中如何应用贪心算法和动态规划求解最优化问题。理解和掌握这两个知识点对于理解算法设计和分析至关重要,特别是在处理规模较大的问题时,选择合适的方法可以显著提高效率和结果的质量。
2010-08-17 上传
cab文件   压缩包文件。存储多个压缩文件的单个压缩包文件。这些文件通常用于软件安装,还用来减小文件大小和缩短 Web 内容的相关下载时间。   cab是windows的压缩格式,用winrar可以打开.但有些是经过加密的.用一般的压缩程序都是打不开的。   一、利用extract解压缩CAB文件   1.extract.exe 是一个 ms-dos 程序,所以没有窗口的图形接口,如果你以前曾是 dos 操作系统的使用者的话,应该对这类程序的使用语法不会感到陌生.来看一下 extract 的指令说明.   extract /a /l   cabinet 是 cab 文件名称   •filename 是你要从 cab 取出的文件名称   •destination 是文件解出后要摆放的位置   •< >只是用来标记说明的,不是「命令」的一部分,注意:每一参数间都有一空白.   •如果你有 dos 使用经验,不妨可以使用 /? 参数(extract /?)来看一下 extract 的指令说明.   •因为我并没有 windows 95/98 的 cab 详细清单,所以,我也不知道哪个文件是在哪个 cab 文件里,唯一的方法,就是去试着一个个cab里慢慢找.   ■举个实际的例子会比较容易明白,假设,我要解 shell.dll 到 c:\windows\system下(shell.dll 是在 precopy1.cab 里)假设我的光驱代号是 f,你换成你的光驱代号就行了.(就是指向你 cab文件的所在路径)   extract /a f:\win98\precopy1.cab shell.dll /l c:\windows\system   ■extract 也可以接受「万用字符」* 符号. 例如要解壓C:\CAB\data1.cab中所有文件到指定文件夾C:\CAB,則執行以下命令: extract /a C:\CAB\ data1.cab * /l C:\CAB 二、利用CAB Explorer工具(請見附件)