题意:
给出事先要求的课程,看是否可行。
思路:
是并查集。
代码如下:
int ch_c(int* pre, int* mark, int course, int numCourses){
int i=0;
int pre_c=0;
for(i=0;i<numCourses;++i){
mark[i]=0;
}
if(pre[course]==-1){
return 1;
}
else{
mark[course]=1;
pre_c=pre[course];
while(pre[pre_c]!=-1){
if(mark[pre_c]==1){
return 0;
}
pre_c=pre[pre_c];
}
}
return 1;
}
bool canFinish(int numCourses, int** prerequisites, int prerequisitesRowSize, int prerequisitesColSize) {
int i=0,j=0;
int pre[numCourses];
int mark[numCourses];
for(i=0;i<numCourses;++i){
pre[i]=-1;
mark[i]=0;
}
for(i=0;i<prerequisitesRowSize;++i){
pre[prerequisites[i][0]]=prerequisites[i][1];
if(ch_c(pre,mark,prerequisites[i][0],numCourses)==0){
return false;
}
}
return true;
}
本文介绍了一种使用并查集算法来验证课程之间的依赖关系是否会导致循环的方法。通过遍历每门课程及其先修课程,确保不会形成闭环依赖,进而判断所有课程的学习计划是否可行。
308

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



