Python中的拉丁广场
假设我们有一个字母矩阵的NxN矩阵,我们必须检查矩阵中是否存在N个完全不同的字母,并且每个字母在每一行中出现一次,在每一列中出现一次。
所以,如果输入像
然后,输出将为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