本题要求按依赖顺序输出项目最终生效的组件版本列表。核心是把「组件依赖关系」建模成一棵(可能含共享节点与环的)依赖树,再按题面规定的顺序遍历。
关键规则拆解:
在软件项目开发里涉及不同版本组件引用,组件依赖组件,形成一棵依赖树(从根节点深层展开); 请编写一段代码,对当前项目的组件依赖关系进行分析,按项目组件依赖顺序输出最终有效的组件版本列表;
说明如下:
参数1:项目直属依赖 directDeps,格式:["组件名:版本号:排除组件列表"],如:"a:v1:"表示项目依赖a组件,版本为v1,无排除组件; 参数2:全局组件依赖 depRules,格式:["组件名:依赖组件名:依赖组件版本号:排除组件列表"],如:"a:b:v2:c",表示a组件依赖b组件v2版本,须排除b组件依赖的c组件子树; 输入列表顺序为依赖声明顺序;组件名、版本号由字母数字组成,非空;输入保证同一组件不同版本依赖相同;排除组件列表以半角逗号分隔,格式如:"a,b",排除列表可为空,输入保证排除列表不会出现"a,b"或"a,"格式;
符合依赖顺序要求的项目依赖组件列表,格式:["组件名:版本号"]
输入
["a:v1:"],[]
输出
["a:v1"]
说明 项目仅依赖一个无传递依赖的组件
输入
["a:v1:","b:v1:"],["a:c:v1:","b:d:v1:","d:c:v2:"]
输出
["a:v1","b:v1","c:v1","d:v1"]
说明
输入
["a:v1:b"],["a:c:v1:","a:b:v1:","b:d:v1:"]
输出
["a:v1","c:v1"]
说明
输入
["a:v1:b,e","d:v1:"],["a:c:v1:","c:e:v1:","b:c:v1:"]
输出
["a:v1","d:v1","c:v1"]
说明
输入
["a:v1:","b:v1:"],["a:c:v1:","b:c:v1:","c:b:v1"]
输出
["a:v1","b:v1","c:v1"]
说明
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册