假设我们必须参加总共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课程表相关推荐

  1. python折叠代码_Python实现代码块儿折叠

    Python实现代码块儿折叠 在python中方法和类都是可以折叠的,但是很多时候需要按照实现的功能将一部分代码折叠起来. 可以用着样的注释代码实现: # ''' your code ''' # 很简 ...

  2. python星空代码_python与云星空Web API

    大家都知道,云星空是支持Web API的.在云社区搜查 Python .API 两个关键词,就会出现相应的显示如下. 感谢Cand,给我们提供了这么好的内容. 我这段时间是做数据迁移的,把WISE数据 ...

  3. python边缘检测代码_python Canny边缘检测算法的实现

    图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号, ...

  4. 怎么用python运行代码_python怎么运行代码程序

    一.使用Python的解释器: 1.安装python一般都会有一个交互式解释器,我们可以在这里直接写入运行 2.但如果我们将其关闭,刚才写的代码就会丢失.此时,我们新建一个文本文档,写入print ' ...

  5. python正则表达式代码_python的re正则表达式实例代码

    导读热词 本文研究的主要是python的re正则表达式的相关内容,具体如下. 概念:正则表达式(通项公式)是用来简洁表达一组字符串的表达式.优势是简洁,一行胜千言. 应用:字符串匹配. 实例代码: C ...

  6. 12个python编程代码_Python大牛私藏的20个python代码,短小精悍,用处无穷

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文来自腾讯云 作者:龙哥 当今python编程语言的潮流已经成为不可阻挡的趋势, ...

  7. python递归函数代码_Python递归函数

    参考: 一.递归函数两大要素 --终止条件和递归方程 1.递归方程,即递归调用的方法 递归通俗的说就是在函数内部自己调用自己,如何调用就是递归方程. 以以下的sum(n)求和函数递归实现方式为例,递归 ...

  8. python常用代码_Python常用算法学习(4) 数据结构(原理+代码)-最全总结

    数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...

  9. python 爬虫代码_python之路(一)_爬虫—爬一下网页代码输出到文件

    在上次公众号中讲到要用python进行开发,所以又拾起来了python.这不,从爬虫进行入门熟悉一下.爬虫是个啥呢?简单说:就是你想高效地从网上获取一些信息,而不用鼠标点点点.官方解释:网络爬虫(又称 ...

最新文章

  1. 关于Opencv2.4.x中stitcher类的简单应用
  2. ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
  3. CPU分时、中断和上下文切换
  4. Java 8————Collectors中的中的joining 方法和mapping方法
  5. 导览系统定制开发_联联周边游系统源码定制开发平台方案
  6. vim编辑器使用详解
  7. Spring Boot 概述、初始化器、spring-boot-maven-plugin 插件简化部署、starter 自动配置原理
  8. [云原生专题-3]:云平台 - 云计算平台快速入门
  9. 北理珠大学生体质测试及健康状况的分析
  10. 使用Apache FtpServer搭建FTP服务器 [FlashFXP]
  11. MySQL如何复制表结构,及如何复制表内容,以及临时表
  12. 如何组织一个高效的开发团队?
  13. 我的编程之路点滴记录(五)
  14. 银河麒麟桌面操作系统【telnet配置】
  15. 百度离线地图金字塔瓦片发布
  16. 【Other】推荐点好听的钢琴曲
  17. 到底什么是上下文(Context)
  18. Find the maximum and minimum value in tensor array
  19. 测试工程师需掌握的技能
  20. 发布一个iPhone版“远程桌面”

热门文章

  1. 软考高级 真题 2012年下半年 信息系统项目管理师 案例分析
  2. 阿里巴巴暑期实习用户体验研究员 面试经验+总结
  3. 《边缘云计算技术及标准化白皮书》
  4. .avi文件转为.mp4
  5. 行走在投资界的程序员:千淘资本合伙人李华兵
  6. 四个数列 || 二分
  7. 全面认识二极管,一篇文章就够了
  8. 阶乘分之一求和公式C语言,n的阶乘分之一之和
  9. python launcher卸载后蓝屏_大毒瘤!卸载WeGame解决XPS 15蓝屏问题
  10. 标准光照模型-半兰伯特模型