課程安排彙總

2021-10-06 06:08:51 字數 1966 閱讀 3481

lc 210 

把課程關係轉成有向圖,對圖進行深度優先遍歷,checked標記已經訪問過的節點,order儲存訪問順序

也用到了回溯演算法:

# checked 陣列儲存已經儲存過的節點, visited記錄當前訪問過的節點, checked記錄訪問過的不會產生環的節點

# order儲存訪問順序,v當前訪問節點

def has_cycle(self,graph,visited,checked,v,path):

if visited[v]: # 當前過程已經訪問過

return true

visited[v] = true

for i in graph[v]:

if not checked[i] and self.has_cycle(graph,visited,checked,i,path):

return true

checked[v] = true

visited[v] = false

return false

def findorder(self, numcourses: int, prerequisites: list[list[int]]) -> list[int]:

if not prerequisites or len(prerequisites) == 0 or numcourses <=1:

retur n [i for i in range(numcourses)]

graph =

visited =

checked =

path =

for i in range(numcourses):

for item in prerequisites:

for i in range(numcourses):

if not checked[i] and self.has_cycle(graph,visited,checked,i,path):

return

path.reverse()

return path

lc 207 

class solution:

def has_cycle(self,graph,visited,checked,v):

if visited[v]:

return true

visited[v] = true

for i in graph[v]:

if not checked[i] and self.has_cycle(graph,visited,checked,i):

return true

checked[v] = true

visited[v] = false

return false

def canfinish(self, numcourses: int, prerequisites: list[list[int]]) -> bool:

if not prerequisites or len(prerequisites) == 0 or numcourses<=1:

return true

graph =

visited =

checked =

for i in range(numcourses):

for item in prerequisites:

for i in range(numcourses):

if not checked[i] and self.has_cycle(graph,visited,checked,i):

return false

return true

CAS KG 課程安排

課程目標 教學安排 詳情請見部落格 cas kg 課程安排 1.1 課程簡介 1.2 知識圖譜概述 1.3 知識圖譜與深度學習 2.1 機器學習基礎 2.2 深度學習基礎 2.3 典型深度學習模型 一 2.4 典型深度學習模型 二 3.1 典型圖演算法 3.2 圖匹配演算法 3.3 面向圖結構的隨機...

616 安排課程

2017.9.11 超時超時超時,去死吧 public class solution 建立所有的後序鍊錶。indegree計算所有的節點的入度。int indegree new int numcourses for int x prerequisites 找到乙個入度為0的節點,開始遍歷。int r...

安排課程 LintCode

你需要去上n門九章的課才能獲得offer,這些課被標號為 0 到 n 1 有一些課程需要 前置課程 比如如果你要上課程0,你需要先學課程1,我們用乙個匹配來表示他們 0,1 給你課程的總數量和一些前置課程的需求,返回你為了學完所有課程所安排的學習順序。可能會有多個正確的順序,你只要返回一種就可以了。...