1. 需求背景
需要解决一个具有实际应用场景的优化或计算问题,要求通过贪心算法或分治算法高效实现。目标可能是:最短路径、任务调度、资源分配、最大子数组和、归并排序优化等。
2. 问题描述
候选问题(任选其一)
贪心算法方向
- 问题A:区间调度最大化
给定一组任务的开始和结束时间,选择尽可能多的不重叠任务。 - 问题B:找零钱问题
用最少数量的硬币凑出指定金额(硬币面值已定)。 - 问题C:Huffman编码压缩
根据字符频率构建最优前缀编码树。
分治算法方向
- 问题D:快速排序优化
针对大规模数据实现三路划分的快速排序。 - 问题E:最近点对问题
在二维平面中找出距离最近的两个点。 - 问题F:矩阵乘法(Strassen算法)
用分治策略优化矩阵乘法计算。
3. 交付要求
-
算法设计
- 说明贪心选择性质或分治的递归拆分策略。
- 给出伪代码或流程图。
-
代码实现
- 使用Python/Java/C++等语言实现,要求代码可运行。
-
复杂度分析
- 分析时间/空间复杂度,对比暴力解法。
-
测试用例
- 提供至少3组输入输出样例(包括边界情况)。
4. 示例参考(贪心算法-区间调度)
输入
python
复制
下载
intervals = [(1, 3), (2, 5), (4, 7), (6, 9)]
输出
python
复制
下载
[(1, 3), (4, 7)] # 最多选择2个不重叠区间
贪心策略
按结束时间排序,每次选最早结束且不冲突的区间。