我正在研究一个程序,以尽可能找到拓扑顺序,但是当我执行以下程序时,我得到了错误 由于没有匹配的函数调用,我不太擅长使用oops概念,我在findOrder函数中提到过 出现错误的评论
我正在解决这个问题course schedule
class Solution {
public:
vector<int> findOrder(int n, vector<vector<int>>& pa) {
vector<int> g[n];
for(auto p : pa){
int u = p[1],v = p[0];
g[u].push_back(v);
}
vector<bool>visited(n,false);
vector<bool>instack(n,false);
vector<int>order;
for(int i=0;i<n;i++){
if(!visited[i]){
if(!dfs(i,visited,instack,g,order))return {};//getting error here
}
}
reverse(order.begin(),order.end());
return order;
}
bool dfs(int x,vector<int> &visited,vector<int> &instack,vector<int> g[],vector<int>order){
instack[x]=true;
visited[x]=true;
for(int i=0;i<g[x].size();i++){
if(instack[g[x][i]]==true)return false;
else if(!visited[g[x][i]] && !dfs(g[x][i],visited,instack,g))return false;
}
instack[x]=false;
order.push_back(x);
return true;
}
};
答案 0 :(得分:4)
在函数cannot read property 'navigate' of undefined
的原型中,您已经将参数dfs
和instack
定义为visited
,但是您在其中提供了类型为vector<int>
的变量调用函数。
最简单的方法可能就是更改:
vector<bool>
进入
bool dfs(int x,vector<int> &visited,vector<int> &instack,vector<int> g[],vector<int>order)
之所以会这样,是因为bool dfs(int x,vector<bool> &visited,vector<bool> &instack,vector<int> g[],vector<int>order)
是模板类,并且未定义vector
到vector<int>
的隐式转换。