python自己做课程表_Python课程表II

该博客介绍如何使用Python解决课程依赖顺序问题。通过创建邻接表和深度优先搜索算法,确定完成所有课程的正确顺序。当存在课程先决条件时,算法能够找到一个可行的课程顺序,如果无法完成所有课程,则返回空数组。示例展示了如何处理包含两个课程和一个先决条件的场景。
摘要由CSDN通过智能技术生成

假设总共有n个路线,这些路线从0到n-1标记。某些课程可能具有先决条件,鉴于课程总数和先决条件对列表,我们必须找到完成所有课程应采取的课程顺序。可能有多个正确的订单,我们只需要找到其中一个即可。如果不可能完成所有课程,则返回一个空数组。

因此,如果输入为2 [[[1,0]],则结果将为[0,1]。一共有2门课程。要选择课程1,我们应该已经完成课程0。因此正确的课程顺序是[0,1]

为了解决这个问题,我们将遵循以下步骤-在main方法中,将需要numCourses和先决条件:这将类似于-

定义一个名为in_degree的数组,并填充所有节点的所有度数,以及图的adj:=邻接表

定义一个称为访问的数组,并用0填充,其大小与numCourses相同

定义一个空堆栈。

对于0到numCourses范围内的i返回一个空列表

如果将访问堆栈传递到其中,则Visited [i]为假,而节点i的dfs为假,则

以相反的顺序返回堆栈元素。

示例

让我们看下面的实现以更好地理解-class Solution(object):

def findOrder(self, numCourses, prerequisites):

in_degree,adj=self.create_adj(numCourses,prerequisites)

visited = [0 for i in range(numCourses)]

stack = []

for i in range(numCourses):

if not visited[i] and

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值