「已注销」 2022-12-31 23:53 采纳率: 80.6%
浏览 29

这个用矩阵的话怎么写?

题目:四项工作分别为宣传、收集、撰写、录制。甲乙丙丁4人各做一项。已知:乙不宣传也不撰写。甲不宣传也不录制。丁不撰写也不录制。丙不录制也不宣传。如果甲不撰写那么丁不宣传。问谁负责收集工作。
分析:手动列个表出来得很快,会发现甲乙丙都不宣传,因此丁必然宣传,因此“如果甲不撰写那么丁不宣传”的意思就是甲撰写。最终得出丙负责收集。

程序思路:
生成4*4矩阵,如果负责该工作记为1,不负责记为0,未知暂记为2。
如果某行或列出现了3个0,那么剩下那个必然为1。
直到收集那一列出现1个1时停止程序的计算。

问:python程序怎么写?

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2023-01-01 00:13
    关注

    代码如下,望采纳

    def get_worker(matrix):
        while True:
            for i in range(4):
                if matrix[i].count(2) == 1:
                    for j in range(4):
                        if matrix[i][j] == 2:
                            matrix[i][j] = 1
                        else:
                            matrix[i][j] = 0
            for j in range(4):
                if [matrix[i][j] for i in range(4)].count(2) == 1:
                    for i in range(4):
                        if matrix[i][j] == 2:
                            matrix[i][j] = 1
                        else:
                            matrix[i][j] = 0
            if matrix[1][2] == 1:
                return "乙"
            elif matrix[2][1] == 1:
                return "甲"
            elif matrix[3][1] == 1:
                return "丁"
            elif matrix[0][3] == 1:
                return "丙"
            
    matrix = [[2, 0, 0, 0], [0, 2, 1, 0], [0, 0, 2, 1], [1, 0, 0, 2]]
    print(get_worker(matrix))
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月31日