拓扑排序-课程表
问题理解:
一共有 n 门课要上,编号为 0 ~ n-1。
先决条件[1, 0],意思是必须先上课 0,才能上课 1。
给你 n 、和一个先决条件表,请你判断能否完成所有课程。
bfs方法模板
def find_order(n=4): courses = [[1, 0], [2, 0], [3, 1], [3, 2]] graph = [[] for _ in range(n)] # 构建节点依赖图 in_degree = [0] * n # 每个节点还依赖多少节点 # 注意方向,根据实际意义标注节点方向是进还是出 for course_in, course_out in courses: graph[course_out].append(course_in) in_degree[course_in] += 1 queue = collections.deque() # 没有依赖节点(in_degree=0)就可以学习了,放入队列中准备出队 [queue.append(e) for e in in_degree if e==0] nums_choose = 0 topo_sort = [] while queue: cur_node = queue.popleft() nums_choose += 1 topo_sort.append(cur_node) for e in graph[cur_node]: # 拿出入度为零的点 in_degree[e] -= 1 if in_degree[e] == 0: queue.append(e) return topo_sort if nums_choose==n else None
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)