电子科技大学算法设计作业解析:贪心与动态规划
3星 · 超过75%的资源 需积分: 13 62 浏览量
更新于2024-09-09
收藏 124KB DOC 举报
“电子科技大学李洪伟算法设计作业及答案,涉及算法设计与分析课程的作业解答,包括排序问题和找零硬币问题。”
在电子科技大学的算法设计课程中,李洪伟老师的作业涵盖了一些核心的算法概念。第一部分作业是关于函数渐进增长速率的排列,这是对算法复杂度分析的基础。题目要求按照增长速率从小到大的顺序排列以下五个函数:
1. f1(n) = O(n^2.5)
2. f2(n) = 2 * log(n) * 2 * log(log(n)) = O(n * log(n))
3. f3(n) = O(n^1.75)
4. f4(n) = 2^2^n = 4^n = O(4^n)
5. f5(n) = 3^n = O(3^n)
根据大O记号表示的渐进上界,可以得出:
- f2(n) = O(n * log(n)) < f3(n) = O(n^1.75)
- f3(n) = O(n^1.75) < f1(n) = O(n^2.5)
- f1(n) = O(n^2.5) < f5(n) = O(3^n)
- f5(n) = O(3^n) < f4(n) = O(4^n)
因此,正确的顺序是:f2 < f3 < f1 < f5 < f4。
第二部分作业是一个找零硬币问题,目标是设计一种方法用最少的硬币支付任意金额。这个问题涉及到两种常见的算法策略:贪心算法和动态规划。
1. **贪心算法**:在这种方法中,我们每次选择面值最大的硬币,只要它不超过剩余需要支付的金额。算法终止于无法再找到合适的硬币或金额变为0。虽然这种方法直观且易于实现,但它并不保证总是能找到最优解。例如,当硬币面值为3、5和9时,使用贪心算法无法找到支付10元的最小硬币组合。
2. **动态规划**:动态规划方法通过构建一个二维数组result和record来记录每种面值硬币在不同金额下的最少硬币数量。对于每个硬币种类i和金额j,计算不使用当前面值i或使用1个、多个i面值硬币的最小数量。这种方法可以确保找到全局最优解,但计算量较大。
在这个具体案例中,两种方法都能解决找零问题,但动态规划可以保证找到最少硬币数量,而贪心算法则可能不是最优的。在实际应用中,我们需要根据问题的具体情况和性能需求来选择合适的方法。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-10 上传
2022-08-08 上传
2022-08-04 上传
2022-08-03 上传
Chromer163
- 粉丝: 6
- 资源: 10
最新资源
- Intel 80386 Programer's reference manul
- Java and XSLT(By GiantDino)
- oracle9i优化器介绍
- I2C总线规范(适合于初级入门的选手下载和学习,高手就不必下载了)
- linux一句话精彩问答
- visual studio .net 使用技巧手册 - 涵盖2002, 2003和2005版
- advanced programming in the unix environment
- ibatis开发指南(中文版)
- Windows 套接字错误代码,值,含义
- user's manual
- 深入浅出MFC pdf格式
- WebWork2开发指南.pdf
- xfire经典文章.pdf
- SQLAnywhereStudio文档.pdf
- 毕业设计动员 ppt 大学
- Hibernate开发指南.pdf