課程表-python
阿新 • • 發佈:2021-10-19
問題:
# 你這個學期必須選修 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