Python中的拉丁广场

假设我们有一个字母矩阵的N x N矩阵,我们必须检查矩阵中是否存在N个完全不同的字母,并且每个字母在每一行中出现一次,在每一列中出现一次。

所以,如果输入像

Xÿž
žXÿ
ÿžX

然后,输出将为True,因为存在3个不同的字母,并且每个字母在每一行和每一列中仅出现一次。

为了解决这个问题,我们将遵循以下步骤-

  • ch:=矩阵中存在的所有元素的集合

  • m:=垫子的转置

  • 对于垫子中的每一行i和m中的每一行j,

    • 如果c不在i或c不在j中,则

    • 返回False

    • 对于ch中的每个c,执行

    • 返回True

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, mat):
          ch=set(j for i in mat for j in i)
          m=zip(*mat)
          for i,j in zip(mat,m):
             for c in ch:
                if c not in i or c not in j:
                   return False
          return True
    ob = Solution()mat = [["x", "y", "z"],["z", "x", "y"],
    ["y", "z", "x"]]
    print(ob.solve(mat))

    输入值

    [["x", "y", "z"],
    ["z", "x", "y"],
    ["y", "z", "x"]]

    输出结果

    True