合法的顺序一共有几种

箭头一改,就开不了工 排得开 排不开 七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b: from itertools import permutations DEP = [(0, 1), (0, 2), (1, 3), (

开始练习 →

⚠️ 多一条依赖,就排不全了

箭头一改,就开不了工 排得开 排不开 七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b:再给它加上一条 5 → 3,然后两张图各排一次,各输出排出来的个数: DEP = [(0, 1), (0, 2), (1, 3), (2

开始练习 →

自己写:数出合法的顺序有几种

箭头一改,就开不了工 排得开 排不开 七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b:补全 ok,判断一个排列是不是合法的拓扑序,然后数出一共有几种。

开始练习 →

自己写:靠排出来的个数判环

箭头一改,就开不了工 排得开 排不开 七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b:补全 kahn 里放后继的那两步,让它返回排出来的个数。两张图各跑一次:原图,以及加上 5 → 3 的那张。

开始练习 →

自己写:哪几对的先后是自由的

箭头一改,就开不了工 排得开 排不开 七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b:RE[u] 是从 u 顺着箭头能走到的全部点。找出所有互相都走不到的点对——这些对的先后没被任何依赖规定。

开始练习 →

构建工具为什么要先建依赖图

构建工具拿到一堆任务,第一件事是把依赖关系建成一张有向图。这么做是为了【0】。

开始练习 →

机器不限时,总轮数由什么决定

依赖都做完的任务可以同时开工。这种情况下,总共要几轮取决于【0】。

开始练习 →

⚠️ 再加机器能不能更快

已经是"依赖做完就能开工"了。这时候再加一倍机器,总轮数【0】。

开始练习 →

串行要七轮,并行要几轮

还是那七个构建任务。这次机器不限:一轮里所有"依赖都做完了"的任务可以同时开工。下面这段把任务分成一层一层,每一层里的任务可以同时开工。输出串行轮数和并行轮数: DEP = [(0, 1), (0, 2), (1, 3)

开始练习 →

自己写:把任务分层

还是那七个构建任务。这次机器不限:一轮里所有"依赖都做完了"的任务可以同时开工。补全分层:整层一起推进,这一层全做完,才轮到下一层。输出每一层各有几个任务。

开始练习 →