TP-Link笔试编程题

一个大型的项目组成通常是由多个模块共同构成的。在项目编译阶段各个模块之间可能存在着依赖关系,现有一个二维数组depend[num][num+1]分别记录了模块0-(num-1)的依赖项,数组每一行的首个元素为该模块的依赖数量n。接下来的n个元素为所依赖模块的ID。例如,depend[0]={3,2,3,4}表示模块0依赖3个其他模块,分别是模块2,3,4。试设计算法输出编译系统所有可能的编译顺序到控制台;若模块存在循环依赖,则输出错误信息到控制台;并对算法时间和控件复杂度进行分析。

函数原型:int dependAnalysis(int arr[num][num])


博主思路仅供参考:这个问题其实就是一个涉及到图论的问题,二维数组表示的是一个有向图,depend[0]={3,2,3,4}表示节点2,3,4分别有一条边通向节点0,把这整一个图用邻接矩阵或者邻接表表示出来后,找出这个图所有可能的拓扑排序,就是这个编译系统所有可能的编译顺序。在拓扑排序的过程中如果检测到环,就输出错误信息。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WX Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值