1. 程式人生 > 其它 >課程表-python

課程表-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
時刻記著自己要成為什麼樣的人!