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