一个完整的软件项目往往会包含很多由代码和文档组成的源文件。编译器在编译整个项目的时候,可能需要按照依赖关系来依次编译每个源文件。比如,A.cpp 依赖 B.cpp,那么在编译的时候,编译器需要先编译 B.cpp,才能再编译 A.cpp。 假设现有 0,1,2,3 四个文件,0号文件依赖1号文件,1号文件依赖2号文件,3号文件依赖1号文件,则源文件的编译顺序为 2,1,0,3 或 2,1,3,0。现给出文件依赖关系,如 1,2,-1,1,表示0号文件依赖1号文件,1号文件依赖2号文件,2号文件没有依赖,3号文件依赖1号文件。请补充完整程序,返回正确的编译顺序。注意如有同时可以编译多个文件的情况,按数字升序返回一种情况即可,比如前述案例输出为:2,1,0,3.
示例1
输入
“1,2,-1,1”
输出
“2,1,0,3”
备注:
-1 表示当前文件没有依赖,输出结果用英文逗号分隔。暂不考虑一个文件依赖多个文件的情况。
本题的主要思想可以参考LC 207. 课程表
ACM模式下的C++代码实现:
#include<vector>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool compare(int a, int b)
{
return a > b; //降序排列,如果改为return a<b,则为升序
}
class Solution {
public:
vector<int> findOrder(int numCourses, vector<vector<int>>& adj) {
vector<int> flags(numCourses, 0);
vector<int> res(numCourses);
res.clear();
for (int i = numCourses - 1; i >=

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



