课程表-python
问题:
# 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。
#
# 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,
# 其中 prerequisites[i] = [ai, bi] ,表
# 示如果要学习课程 ai 则 必须 先学习课程 bi 。
#
#
# 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。
方法:
一、广度优先遍历
需要一个队列进行搜索,结合拓扑排序
def test(numCourses, prerequisties): edges = collections.defaultdict(list) vertexs = [0] * numCourses # put data for each in prerequisties: edges[each[1]].append(each[0]) vertexs[each[0]] += 1 # put not pre course into queue q = collections.deque([e for e in range(numCourses) if vertex[e]==0]) # node visited flag visited = 0 while q: visited += 1 u = q.popleft() for e in edges[u]: vertexs[e] -= 1 if vertexs[e]==0: q.append(e) return visited == numCourses
二、深度优先
def test(numCourses, prerequisites): edges = collcetions.defaultdict(list) visited = [0]*numCourses result = list() valid = True for each in prerequisites: edges[each[1]].append(each[0]) def dfs(v): nonlocal valid visitd[v] == 1 for e in edges[v]: if visited[e]==0: dfs(e) if not valid: return elif visited[e]==2: valid = False return visited[v] == 2 result.append(v) for i in range(numCourses): if valid and not visited[i]: dfs(i) return valid
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2017-10-19 TACOTRON:端到端的语音合成