博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode Course Schedule
阅读量:2341 次
发布时间:2019-05-10

本文共 910 字,大约阅读时间需要 3 分钟。

思路:

根据给出的依赖关系构建一个图。然后在图里面用深度优先遍历判断是否有回路。如果依赖有回路,那么就是无法完成的。

深度优先判断回路:

如果一个课可以修到,那么着色为黑色实现如下:

因为深度优先遍历是递归的,所以我们在刚刚进去一个点A的时候着色为灰,代表这个点还有依赖(子孙B)。如果我们在遍历子孙B的时候,发现子孙依赖的节点是灰色的(不妨假设子孙B依赖A),那么代表产生环了,这是就是环路依赖。如果子孙依赖黑色点C,那么依赖点C可以修到,可以返回。
如果点A的所有子孙都不产生环路依赖,那么A也是可以修到的,着色黑。

public class Solution {
private boolean graph[][]; private int record[]; private final int black=2; private final int gray=1; private final int write=0; private int coursesCount; private boolean DFS(boolean graph[][],int rowIndex) { if(record[rowIndex]==write) { record[rowIndex]=gray; } else if(record[rowIndex]==gray) { return false; } else { return true; } for(int i=0;i
0;j--) { graph[prerequisites[i][j]][prerequisites[i][j-1]]=true; } } for(int i=0;i

转载地址:http://pduvb.baihongyu.com/

你可能感兴趣的文章
java实现冒泡排序
查看>>
spring boot 初试,springboot入门,springboot helloworld例子
查看>>
Spring中配置和读取多个Properties文件--转
查看>>
使用JNI进行Java与C/C++语言混合编程(1)--在Java中调用C/C++本地库
查看>>
Mac 终端命令连接mysql
查看>>
Lua中的数学库
查看>>
多态小结
查看>>
Java连MySQL的驱动mysql-connector-java-5.1.21-bin.jar的安装方法
查看>>
java基础小结
查看>>
线程概念及死锁的理解
查看>>
数据结构之红黑树
查看>>
android学习之——界面 控件 体系 布局
查看>>
Eclipse开发Android程序在手机上运行
查看>>
ListView深入理解
查看>>
Activity的四种launchMode
查看>>
java面试题(7.22)
查看>>
java项目之——坦克大战01
查看>>
java项目之——坦克大战02
查看>>
java项目之——坦克大战03
查看>>
java项目之——坦克大战 04
查看>>