python课程表代码_Python课程表
假設我們必須參加總共numCourses課程,從0到numCourses-1標記。某些課程可能有先決條件,例如,要選修課程0,我們必須首先選修課程1,該課程用一對表示:[0,1]。假設提供的課程總數和先決條件對列表,我們必須檢查您是否有可能完成所有課程?
因此,如果輸入類似于? numCourses = 2并且前提條件= [[1,0]],那么結果將為true,因為總共要學習2門課程。要參加課程1,我們應該已經完成課程0。所以這是可能的。
為了解決這個問題,我們將遵循以下步驟-在main方法中,將需要numCourses和先決條件:這將類似于-
如果前提條件沒有條目,則返回true
制作一個名為visited的數組,并用0填充,其范圍與numCourses相同
adj_list:=使用先決條件創建圖形
對于i范圍從0到numCourses如果圖中的訪問節點之間沒有循環,則返回false
如果visit [i]為假,則
返回真
示例
讓我們看下面的實現以更好地理解-class?Solution(object):
def?canFinish(self,?numCourses,?prerequisites):
if?len(prerequisites)?==?0:
return?True
visited?=?[0?for?i?in?range(numCourses)]
adj_list?=?self.make_graph(prerequisites)
for?i?in?range(numCourses):
if?not?visited[i]:
if?not?self.cycle(adj_list,visited,i):
return?False
return?True
def?cycle(self,adj_list,visited,current_node?=?0):
if?visited[current_node]?==-1:
return?False
if?visited[current_node]?==?1:
return?True
visited[current_node]?=?-1
if(current_node?in?adj_list):
for?i?in?adj_list[current_node]:
if?not?self.cycle(adj_list,visited,i):
return?False
visited[current_node]?=?1
return?True
def?make_graph(self,array):
adj_list?=?{}
for?i?in?array:
if?i[1]?in?adj_list:
adj_list[i[1]].append(i[0])
else:
adj_list[i[1]]?=?[i[0]]
return?adj_list
ob?=?Solution()print(ob.canFinish(2,?[[1,0]]))
輸入值2
[[1,0]]
輸出結果true
總結
以上是生活随笔為你收集整理的python课程表代码_Python课程表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GFS分布式
- 下一篇: oa怎么修改服务器地址,致远oa如何设置