1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

补充:本题同时能拓扑排序解决

基础一般的同学可通过本篇文章学习《一文搞定拓扑排序》

解题思路

这道题本质上分成两步:

1.1.1. 判断依赖关系图中是否存在循环依赖。

P4823.第1题-简易的二进制包依赖关系检查和处理

    1000ms Tried: 438 Accepted: 111 Difficulty: 6 所属公司 : 华为
    算法与标签>DFS

题目内容

一个项目中,除了自研的代码外,还会依赖很多二进制包(后续简称为包),这些包也会依赖其它的包,每个被依赖的包还有版本号的要求。本题借鉴了包管理的思想,需要完成一个简易的包依赖关系分析和处理的模型,要求对输入的一组依赖关系进行分析,判断是否存在循环依赖,如果有循环依赖则输出不合理;否则进一步对依赖包的版本号进行规整,并输出规整后的依赖关系串。

该模型的输入是一组依赖关系,其数据定义如下:

以图为例,输入的数据为:

  1. 依赖关系 111:{1,3,11}\{1,3,11\}{1,3,11},表示包 111 依赖包 333 的 111111 版本;

  2. 依赖关系 222:{2,3,12}\{2,3,12\}{2,3,12},表示包 222 依赖包 333 的 121212 版本。

因此,该依赖关系的数据结构由三个属性组成:

  • 序号:任意正整数,用于唯一标识一个二进制包(如上图中的包1)。
  • 依赖包序号:任意正整数,表示该包所依赖的另一个包的序号(如上图中的包3)。
  • 依赖包版本号:正整数(如上图中的包3的11版本)。而且1≤版本号≤991 \le 版本号 \le 991≤版本号≤99。

基于该依赖关系的数据分析,我们需要进行如下的判断和处理: 1、判断包依赖关系中是否存在循环依赖 包之间的依赖关系不能形成循环,例如,包 111 依赖包 222,包 222 依赖包 333,包 333 又依赖包 111,这种情况属于循环依赖,不合理。 注:版本号不纳入循环依赖与否的判断

2、对包依赖关系的版本号进行规整处理 如果判断包依赖关系是合理的,我们需要进一步一对依赖包的版本号进行规整处理。对于多个包依赖同一个包的情况,我们需要判断被依赖包的不同版本号,取其中的最大值,然后输出新的依赖关系(具体见下面的样例描述)。

输入描述

每次会输入两组依赖关系的信息,分别解析和输出两组结果,每组的格式定义如下:

包依赖关系的个数:正整数n (0<n<100)n\ (0 < n < 100)n (0<n<100),表示待输入的包依赖关系的个数。

包依赖关系:每行表示一个依赖关系,格式为:序号,依赖包序号,依赖包版本号,共 nnn 行。

序号,依赖包序号,依赖包版本号的定义参考前文的数据定义章节。

注:这两组依赖关系是完成独立的,建议从方法复用角度,合理对方法进行封装,避免出现重复代码。

输出描述

基于输入的两组数据进行处理,按顺序依次输出结果即可,每组的输出要求如下:

1、判断输入的二进制包数组是否合理,参考 111、判断包依赖关系中是否存在循环依赖。如果判断是循环依赖,则输出 falsefalsefalse;否则进行第 222 步。

2、对包依赖关系进行版本号的规整处理,参考 222 、对包依赖关系的版本号进行规整处理。处理完成后输出新的依赖关系(参考下方样例说明)。

样例1

输入

3
1,2,23
2,3,34
4,2,25
3
1,2,23
2,3,34
3,1,12

输出

1,2,25
2,3,34
4,2,25
false

说明

输入:

第一组输入的解释: 333 // 表示待输入的依赖的个数 1,2,231,2,231,2,23 // 包 111 依赖包 222 版本 232323 2,3,342,3,342,3,34 // 包 222 依赖包 333 版本 343434 4,2,254,2,254,2,25 // 包 444 依赖包 222 版本 252525

包 111 依赖包 222 版本 232323,包 222 依赖包 333 版本 343434,包 444 依赖包 222 版本 252525。其中不存在幅环依赖; 同时包 111 和包 444 共同依赖包 222,对依赖的版本号进行规整后为 252525。 因此整个依赖关系数组是合理的,规整完版本号后再进行输出。

第二组输入的解释: 包 111 依赖包 222,包 222 依赖包 333,包 333 依赖包 111,存在循环依赖。因此整个依赖关系数组不合理,输出 falsefalsefalse。

输出:

第一组输出结果: 1,2,251,2,251,2,25 // 被依赖的包 222 的版本号 232323 更高,此处原来版本号 232323 需要被替换成 252525 2,3,342,3,342,3,34 4,2,254,2,254,2,25

第二组输出结果: falsefalsefalse

提示

1、自己依赖自己也属于循环依赖。

2、输入的依赖关系中,包 XXX 依赖包 YYY 只会出现一次,不需要出现多次对应使用哪个版本号的问题。

3、每个包可以依赖多个包,包 XXX 也可以被多个包依赖。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 1, 51ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?