您的位置:首页 > 编程语言

[置顶] TP-Link笔试编程题

2017-10-31 14:20 148 查看
一个大型的项目组成通常是由多个模块共同构成的。在项目编译阶段各个模块之间可能存在着依赖关系,现有一个二维数组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,把这整一个图用邻接矩阵或者邻接表表示出来后,找出这个图所有可能的拓扑排序,就是这个编译系统所有可能的编译顺序。在拓扑排序的过程中如果检测到环,就输出错误信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: