leetcode Course Schedule

本文介绍了一种使用并查集算法来验证课程之间的依赖关系是否会导致循环的方法。通过遍历每门课程及其先修课程,确保不会形成闭环依赖,进而判断所有课程的学习计划是否可行。

题意:

        给出事先要求的课程,看是否可行。

思路:

        是并查集。

代码如下:

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;
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值