• 课程表-python


     问题:

    # 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 
    #
    # 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,
    # 其中 prerequisites[i] = [ai, bi] ,表
    # 示如果要学习课程 ai 则 必须 先学习课程 bi 。
    #
    #
    # 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。

    方法:

    一、广度优先遍历

    需要一个队列进行搜索,结合拓扑排序

    def test(numCourses, prerequisties):
        edges = collections.defaultdict(list)
        vertexs = [0] * numCourses
        # put data
        for each in prerequisties:
            edges[each[1]].append(each[0])
            vertexs[each[0]] += 1
        # put not pre course into queue
        q = collections.deque([e for e in range(numCourses) if vertex[e]==0])
        # node visited flag
        visited = 0
        while q:
            visited += 1
            u = q.popleft()
            for e in edges[u]:
                vertexs[e] -= 1
                if vertexs[e]==0:
                    q.append(e)
        return visited == numCourses

     二、深度优先

    def test(numCourses, prerequisites):
        edges = collcetions.defaultdict(list)
        visited = [0]*numCourses
        result = list()
        valid = True
        for each in prerequisites:
            edges[each[1]].append(each[0])
        def dfs(v):
            nonlocal valid
            visitd[v] == 1
            for e in edges[v]:
                if visited[e]==0:
                    dfs(e)
                    if not valid:
                        return
                elif visited[e]==2:
                    valid = False
                    return
            visited[v] == 2
            result.append(v)
            
        for i in range(numCourses):
            if valid and not visited[i]:
                dfs(i)
        return valid
    时刻记着自己要成为什么样的人!
  • 相关阅读:
    第一册:lesson thirty five。
    第一册:lesson thirty three。
    第一册:lesson thirty one。
    C#比较两个对象是否为同一个对象。
    第一册:lesson twentynine..
    第一册:lesson twenty seven。
    C#函数返回值。
    说明
    推荐一些python Beautiful Soup学习网址
    祝各位节日快乐!20151111
  • 原文地址:https://www.cnblogs.com/demo-deng/p/15424794.html
Copyright © 2020-2023  润新知