python3暴力解
class Solution(object):
def numMagicSquaresInside(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
grids = self.generate_matrix(grid)
count = 0
for i in grids:
if self.checkmagic(i) == True and self.checksame(i) == True:
count = count + 1
return count
def generate_matrix(self, grid):
all = []
# 生成所有矩阵组合
for n in range(len(grid[0])-2):
temmatrix = []
for m in range(len(grid)-2):
tem = []
tem.append(grid[m][n:n + 3])
tem.append(grid[m + 1][n:n + 3])
tem.append(grid[m + 2][n:n + 3])
temmatrix.append(tem)
for o in range(len(temmatrix)):
all.append(temmatrix[o])
return all
def checksame(self,matrix):
l = len(matrix)
flag = True
tem = []
for g in range(l):
for h in range(l):
tem.append(matrix[g][h])
for i in tem:
if i >= 10:
flag = False
if len(set(tem)) == 1:
flag = False
return flag
def checkmagic(self, matrix):
l = len(matrix)
flag = True
# 斜
tmp = 0
for i in range(l):
tmp += matrix[i][i]
if tmp != 15:
flag = False
# 行
for i in range(l):
tmp = 0
for j in range(l):
tmp += matrix[i][j]
if tmp != 15:
flag = False
# 列
for i in range(l):
tmp = 0
for j in range(l):
tmp += matrix[j][i]
if tmp != 15:
flag = False
return flag
if __name__ == '__main__':
Solution().numMagicSquaresInside(
[[4, 3, 8, 4],
[9, 5, 1, 9],
[2, 7, 6, 2]]
)
本文介绍了一种使用Python3实现的暴力解法,用于检测给定网格中是否存在魔法方阵。魔法方阵是指由正整数构成的n×n矩阵,其中每一行、每一列及两条对角线上的数之和都相等。该算法首先生成网格的所有3×3子矩阵组合,然后检查每个子矩阵是否满足魔法方阵的条件。
168

被折叠的 条评论
为什么被折叠?



