Python贪心算法

贪心算法(Greedy Algorithm)是一种常见的算法设计策略,它在每一步选择当前最优解,希望通过局部最优解最终得到全局最优解。贪心算法通常适用于满足一些特定条件的问题,例如货币找零、活动选择、任务调度等。贪心算法的优势在于简单、高效,但并不适用于所有问题。

cpp 复制代码
def activity_selection(start, finish):
    n = len(start)
    activities = []
    i = 0
    activities.append(i)
    
    for j in range(1, n):
        if start[j] >= finish[i]:
            activities.append(j)
            i = j

    return activities

# 测试示例
start_time = [1, 3, 0, 5, 8, 5]
finish_time = [2, 4, 6, 7, 9, 9]
selected_activities = activity_selection(start_time, finish_time)
print("Selected activities:", selected_activities)

在上面的示例中,activity_selection函数使用贪心算法解决活动选择问题。给定一组活动的开始时间和结束时间,函数会选择一组不相互冲突的活动,使得可以安排尽可能多的活动。

贪心算法的关键在于每次选择结束时间最早的活动。在循环中,如果下一个活动的开始时间大于等于当前活动的结束时间,则将其加入到选择的活动列表中。

贪心算法的一个重要特征是贪心选择性质,即每一步都选择最优解,而不考虑未来的选择。因此,贪心算法的正确性通常需要证明。

相关推荐
我命由我123451 分钟前
React - BrowserRouter 与 HashRouter、push 模式与 replace 模式、编程式导航、withRouter
开发语言·前端·javascript·react.js·前端框架·html·ecmascript
Yvonne爱编码2 分钟前
Java 中的 hashCode () 与 equals () 核心原理、契约规范、重写实践与面试全解
java·开发语言·数据结构·python·hash
老虎06275 分钟前
Java基础面试题(08)—Java(集合—HashMap的使用和实现原理红黑树)
java·开发语言
IT从业者张某某5 分钟前
基于DEVC++实现一个控制台的赛车游戏-02-实现赛车游戏
开发语言·c++·游戏
老鼠只爱大米12 分钟前
LeetCode经典算法面试题 #55:跳跃游戏(贪心法、动态规划、BFS等多种实现方案详解)
算法·leetcode·贪心算法·动态规划·bfs·java面试·跳跃游戏
HappyAcmen12 分钟前
理解Python中的global与nonlocal
python
guygg8819 分钟前
基于数据驱动的模型预测控制电力系统机组组合优化MATLAB实现
开发语言·matlab
lly20240620 分钟前
组合模式:深入理解与实际应用
开发语言
2501_9083298525 分钟前
C++中的备忘录模式
开发语言·c++·算法
测试老哥43 分钟前
Web自动化测试:Cypress 测试框架概述
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例