当前位置: 首页 > news >正文

美食美客网站建设项目规划书百度搜索的优势

美食美客网站建设项目规划书,百度搜索的优势,怎么做超链接网站,北京做企业网站问题背景 你这个学期必须选修 n u m C o u r s e s numCourses numCourses 门课程,记为 0 0 0 到 n u m C o u r s e s − 1 numCourses - 1 numCourses−1。 在选修某些课程之前需要一些先修课程。 先修课程按数组 p r e r e q u i s i t e s prerequisites p…

问题背景

你这个学期必须选修 n u m C o u r s e s numCourses numCourses 门课程,记为 0 0 0 n u m C o u r s e s − 1 numCourses - 1 numCourses1
在选修某些课程之前需要一些先修课程。 先修课程按数组 p r e r e q u i s i t e s prerequisites prerequisites 给出,其中 p r e r e q u i s i t e s [ i ] = [ a i , b i ] prerequisites[i] = [a_i, b_i] prerequisites[i]=[ai,bi],表示如果要学习课程 a i a_i ai必须 先学习课程 b i b_i bi
例如,先修课程对 [ 0 , 1 ] [0, 1] [0,1] 表示:想要学习课程 0 0 0,你需要先完成课程 1 1 1
请你判断是否可能完成所有课程的学习?如果可以,返回 t r u e true true;否则,返回 f a l s e false false

数据约束

  • 1 ≤ n u m C o u r s e s ≤ 2000 1 \le numCourses \le 2000 1numCourses2000
  • 0 ≤ p r e r e q u i s i t e s . l e n g t h ≤ 5000 0 \le prerequisites.length \le 5000 0prerequisites.length5000
  • p r e r e q u i s i t e s [ i ] . l e n g t h = 2 prerequisites[i].length = 2 prerequisites[i].length=2
  • 0 ≤ a i , b i < n u m C o u r s e s 0 \le a_i, b_i \lt numCourses 0ai,bi<numCourses
  • p r e r e q u i s i t e s [ i ] prerequisites[i] prerequisites[i] 中的所有课程对 互不相同

解题过程

判断是否是有向无环图的模板题,暴力的角度上看,深搜和广搜都能做,用图的入度来进行判断。
看了 灵神的题解 学到了三色标记法,进一步了解到这种方法能够解决拓扑排序的问题,决定目前的阶段先学到这种程度。
用三种状态来描述当前处理过程中节点的情况:

  • 如果当前节点尚未被访问,用 0 0 0 来标记。
  • 如果当前节点正在访问中(也就是当前正在处理与它相关的节点),用 1 1 1来标记。
  • 如果当前节点已经访问完毕,用 2 2 2 来标记。

如果图中无环,那么不应该出现在处理相关节点的过程中遇到状态为正在访问中的节点的情况。

具体实现

class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {List<Integer>[] graph = new ArrayList[numCourses];Arrays.setAll(graph, i -> new ArrayList<>());// 根据先后要求建图,所给二维数组中的第二个下标表示前置for(int[] item : prerequisites) {graph[item[1]].add(item[0]);}int[] colors = new int[numCourses];for(int i = 0; i < numCourses; i++) {if(colors[i] == 0 && dfs(i, graph, colors)) {return false;}}return true;}// 遍历方法返回的就是图中是否有环private boolean dfs(int cur, List<Integer>[] graph, int[] colors) {// 将当前节点标记为访问中colors[cur] = 1;// 依次访问这个从这个节点出发,能够到达的所有节点for(int next : graph[cur]) {// 判断是否遇到访问中的节点,并递归当前节点// 注意 Java 中逻辑与比逻辑或优先级要高,这里如果没有发生或运算短路,要先计算与if(colors[next] == 1 || colors[next] == 0 && dfs(next, graph, colors)) {return true;}}// 将当前节点标记为已访问过colors[cur] = 2;return false;}
}
http://www.hkea.cn/news/835359/

相关文章:

  • 网站建设的广告语seo自动工具
  • 有专门做市场分析的网站么太原关键词优化报价
  • 网站文化建设搜索引擎推广的常见形式有
  • wordpress分类目录消失泸州网站seo
  • 易云巢做网站公司seo入门到精通
  • 新津网站建设百度ai助手入口
  • 做学校网站什么文案容易上热门
  • 网站开发技术包括郑州网站关键词排名
  • 网站开发预算怎么算百度竞价ocpc
  • 成都锐度设计公司怎么样优化大师怎么提交作业
  • 租用网站服务器东莞市网站建设
  • 馆陶县网站网站运营管理
  • 西双版纳傣族自治州医院seo搜索优化网站推广排名
  • wordpress站点网址小吃培训2000元学6项
  • 郑州网站制作天强科技seo百度发包工具
  • 江阴市住房与建设局网站seo工资多少
  • wordpress image.php南宁百度首页优化
  • 谢家华做网站百度指数与百度搜索量
  • wordpress 安装 ubuntu整站优化代理
  • 做公司网站协议书模板下载百度竞价推广公司
  • 福田蒙派克6座二手值多少钱重庆seo点击工具
  • 有了域名 怎么做网站外贸网站推广方法之一
  • 审美网站长春网站建设路
  • 网站 管理系统域名查询注册信息查询
  • 专业网站设计发展前景推广网站软文
  • 怎么建设seo自己网站网站优化推广教程
  • 最新app开发软件石家庄网站建设seo公司
  • 江苏自助建站系统哪家好推广网站要注意什么
  • 唐河做网站关键字搜索引擎
  • 松江专业做网站公司seo视频教程百度云