三阶幻方
三阶幻方是最简单的幻方,又叫九宫格,是由1,2,3,4,5,6,7,8,9九个数字组成的一个三行三列的矩阵(如右图示),其对角线、横行、纵向的
的和都为15,称这个最简单的幻方的幻和为15。中心数为5。
三阶幻方共有八组结果
8
276
951
438
294
753
618
438
951
276
492
357
816
618
753
294
672
159
834
816
357
492
834
159
672
使用深度优先搜索算法,暴力搜索所有解空间,找到符合要求的一组数,放入ans数组
注意
1.浅拷贝的问题
a = [1, 2, 3]
b = a
c = a.copy()
b[0] = 111
c[0] = 222
print(a, b, c)
[111, 2, 3] [111, 2, 3] [222, 2, 3]
2.与js不同,Python中对空数组执行pop操作会报错,但js不会
js
a = []
console.log(a.pop());
undefined
py
a=[]
a.pop()
IndexError: pop from empty list
实现代码
'''
三阶幻方8个
四阶幻方7040个
'''
# 幻方阶数
n = 3
# 幻和,即每行,每列和对角线的和
s = n * n * (n * n + 1) // 2 // n
# 数组
a = []
# 使用过的数字
used = set()
# 答案数组
ans = []
# 检查是否满足幻方条件
def check():
flag = True
for i in range(n):
# 行的幻和
r =