逐至 2021-03-29 10:44 采纳率: 100%
浏览 124
已采纳

另一个算法题,进链接看文本,不限语言c/c++/python,会的留下代码或者写伪代码分析,请带注释

链接: https://pan.baidu.com/s/1UoBp3_mvMvcbADTh1FQd8A

提取码: 5ti7

  • 写回答

3条回答 默认 最新

  • groovy2007 2021-03-30 04:52
    关注

    假设邻接矩阵为g,g[i][j]表示顶点i到顶点j有一条边,那么我们要找的就是这样一个i:第i行全部为0,且第i列除了g[i][i]之外全部为1。我们随便选一对i和j,如果g[i][j]为1的话,那么可以划掉第i行(也就是排除掉了i),如果g[i][j]为1,那么就可以划掉第j列。只要检查一个格子就可以排除掉一个选项,所以运行时间为O(V)。python代码如下:

    from collections import deque
    def find(g):
        n = len(g)
        vertices = deque(range(n))
        while len(vertices) > 1:
            i = vertices.popleft()
            j = vertices.popleft()
            if g[i][j] == 0:
                vertices.append(i)
            else:
                vertices.append(j)
    
        # Now there is only one vertex
        # Check row i and column i
        i = vertices[0]
        for j in range(n):
            if g[i][j] != 0:
                return -1
            if i != j and g[j][i] != 1:
                return -1
        return i
        
    g=[[0,1,1,1],
       [1,0,0,1],
       [0,0,0,1],
       [0,0,0,0]]
    print(find(g)) # 3
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积