2、背景 大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。 问题 若用有向网表示教学计划,其中顶点表示某门课程,有向边表示课程之间的先修关系(如果A课程是B课程的先修课程,那么A到B之间有一条有向边从A指向B)。试设计一个教学计划编制程序,获取一个不冲突的线性的课程教学流程。(课程线性排列,每门课上课时其先修课程已经被安排)。 根据以下提供的课程信息及先行后继关系,给出一个合理的教学计划序列。 12 16 程序设计基础 离散数学 数据结构 汇编语言 语言的设计与分析 计算机原理 编译原理 操作系统 高等数学 线性代数 普通物理 数值分析 程序设计基础 离散数学 程序设计基础 数据结构 离散数学 数据结构 程序设计基础 汇编语言 数据结构 语言的设计与分析 汇编语言 语言的设计与分析 普通物理 计算机原理 数据结构 编译原理 语言的设计与分析 编译原理 数据结构 操作系统 计算机原理 操作系统 高等数学 线性代数 高等数学 普通物理 程序设计基础 数值分析 高等数学 数值分析 线性代数 数值分析 要求:怎样才能第一个输出入度为0的课程“程序设计基础”
时间: 2024-03-26 17:34:34 浏览: 43
首先,我们需要将课程和先修关系表示成图的形式。根据题目描述,我们可以将每门课程看做图中的一个顶点,有向边表示先修关系。
接下来,我们需要找到入度为0的课程,也就是没有先修课程的课程。可以使用一个数组来记录每个顶点的入度,初始值为0。然后遍历所有的边,对于每条边(A, B),将B的入度加1。最后遍历一遍顶点,找到入度为0的顶点即可。
在这个例子中,我们可以先将所有的课程和先修关系表示成图的形式:
```
程序设计基础
/ \
离散数学 数据结构
/ \ / \
汇编语言 语言的设计与分析
/ \ / \
计算机原理 编译原理 操作系统
/ / \
普通物理 高等数学 线性代数
/
数值分析
```
然后,我们可以使用一个数组来记录每个顶点的入度:
```
{
"程序设计基础": 0,
"离散数学": 2,
"数据结构": 4,
"汇编语言": 2,
"语言的设计与分析": 3,
"计算机原理": 1,
"编译原理": 2,
"操作系统": 2,
"普通物理": 1,
"高等数学": 2,
"线性代数": 2,
"数值分析": 2
}
```
最后,我们遍历一遍顶点,找到入度为0的顶点,也就是没有先修课程的课程。在这个例子中,入度为0的顶点是“程序设计基础”。