本篇博客将详细介绍C++中贪心算法(Greedy Algorithm)的用法,并通过一个经典的例子——活动选择问题(Activity Selection Problem)来展示其详细实现。
1. 什么是贪心算法?
贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。它不考虑历史的选择,也不试图回溯或修正之前的选择。
核心思想:
“目光短浅”:只考虑局部最优解,希望这些局部最优解能最终组合成一个全局最优解。
特点:
- 无后效性(No Aftermath):当前的选择不会对后续子问题的求解产生影响。
- 局部最优选择(Locally Optimal Choice):每一步都选择当前看来最好的方案。
- 不可撤销(Irreversible):一旦做出选择,就不能改变。
何时使用贪心算法?
贪心算法并非对所有问题都有效,它