【问题标题】:How do I create a magic square matrix using python如何使用 python 创建幻方矩阵
【发布时间】:2022-12-04 13:48:14
【问题描述】:

一个篮子以矩阵的形式给你。如果矩阵的大小为 N x N ,那么您可以放入篮子每个槽中的鸡蛋数量范围为 1 到 N2 。你的任务是把鸡蛋放在篮子里,使矩阵的每一行、每一列和对角线的总和保持不变

此代码仅适用于奇数,但不适用于偶数。

这是我试过但没有用的代码 `

def matrix(n): 
    m = [[0 for x in range(n)] 
                      for y in range(n)]
    i = n / 2
    j = n - 1
    num = 1
    while num <= (n * n): 
        if i == -1 and j == n:
            j = n - 2
            i = 0
        else:
            if j == n: 
                j = 0 
            if i < 0: 
                i = n - 1
        if m[int(i)][int(j)]:
            j = j - 2
            i = i + 1
            continue
        else: 
            m[int(i)][int(j)] = num 
            num = num + 1
        j = j + 1
        i = i - 1
    print ("Sum of eggs in each row or column and diagonal ",n * (n * n + 1) / 2, "\n") 
    for i in range(0, n): 
        for j in range(0, n): 
            print('%2d ' % (m[i][j]),end = '') 
            if j == n - 1:  
                print()
n=int(input("Number of rows of matrix:"))
matrix(n)

`

【问题讨论】:

  • 有一个简单的公式可以创建一个奇数边的幻方,当边是偶数时就不起作用了。您显然正在使用该算法。快速谷歌搜索应该也能帮助您处理偶边正方形。

标签: python python-3.x matrix computer-science magic-square


【解决方案1】:
def matrix(n): 
m = [[0 for x in range(n)] 
                  for y in range(n)]
i = n / 2
j = n - 1
num = 1
while num <= (n * n): 
    if i == -1 and j == n:
        j = n - 2
        i = 0
    else:
        if j == n: 
            j = 0 
        if i < 0: 
            i = n - 1
    if m[int(i)][int(j)]:
        j = j - 2
        i = i + 1
        continue
    else: 
        m[int(i)][int(j)] = num 
        num = num + 1
    j = j + 1
    i = i - 1
print ("Sum of eggs in each row or column and diagonal ",n * (n * n + 1) / 2, "
") 
for i in range(0, n): 
    for j in range(0, n): 
        print('%2d ' % (m[i][j]),end = '') 
        if j == n - 1:  
            print()

n=int(input("矩阵的行数:")) 矩阵(n)

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2020-07-09
    • 2018-04-24
    • 2020-10-11
    相关资源
    最近更新 更多