数据结构与算法python版 MOOC 第十二周

这篇博客介绍了图的深度优先搜索DFS算法,并通过两个实例展示了其在解决实际问题中的应用。第一个例子是判断是否存在一个按照先修关系学完所有课程的顺序,通过构建课程依赖图并检测环来解决。第二个例子是计算地图上所有联网的服务器数量,通过统计行和列的服务器数量来确定服务器是否联网。这两个问题都涉及到了图的遍历和环的检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十二、图及算法-下

本系列博客基于“ (北京大学)数据结构与算法python版”慕课,课程在中国大学慕课bilibili上均可找到。

1. 内容

  1. 深度优先搜索DFS算法
  2. 图的应用:拓扑排序,强连通分支,最短路径,最小生成树,

2. 课程代码

GitHub中下载

3. OJ作业

所有代码均可在github中下载

3.1 先修课

题目内容:
   有 n 门课程要选,其编号分别由 0 至 n-1。每个课程都有一些需要提前学完的先修课程:例如,假设在学习课程 0 前需要先学习课程 1 ,我们用一个先修关系对[0, 1]来表示这种 “后学习课程,先修课程” 的关系。现给定一系列课程与若干先修关系,请判断是否存在一个方案可以学完所有课程

输入格式:输入分为两行,第一行为一个整数,表示课程的总数。第二行为一个嵌套列表的Python表达式,包含若干先修关系对
输出格式:True或False,表示是否存在一个按照先修关系学完所有课程的顺序

输入样例:
2
[[1,0],[0,1]]
输出样例:
False

方法:先用一个列表存储每个课程的先修课程。然后递归判断每一个课是否会产生环

def canFinish(n, course_list, pre):
    if len(course_list) == 0:  # 没有先后修关系,
        return True
    for i in range(len(pre)):  # 得到每门课的所有先修课程
        course_list[pre[i][1]].append(pre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值