【发布时间】:2020-10-19 05:53:40
【问题描述】:
我们将幻方定义为一个由不同的正整数组成的矩阵,其中任何行、列或对角线长度的总和始终等于同一个数字:幻常数。
您将获得一个包含范围内的整数矩阵。我们可以将任何数字转换为范围内的任何其他数字,成本为 。给定 ,以最低成本将其转换为幻方。在新行上打印此费用。
注意:生成的幻方必须包含包含范围内的不同整数。
例如,我们从以下矩阵开始:
5 3 4
1 5 8
6 4 2
我们可以把它转换成下面的幻方:
8 3 4
1 5 9
6 7 2
这需要 3 次替换,成本为 . 5-8 + 8-9 + 4-7 = 7
我已经编写了一个程序来解决这个问题,但是当我尝试运行它时得到了不正确的结果。
def formingMagicSquare(s):
arr=[]
duplicates=[]
totaldifference=0
for i in range(0,len(s)):
linesum=sum(s[i])
for j in range(0,len(s[i])):
if(s[i][j] in arr and linesum!=15):
duplicates.append(i*10+j)
else:
arr.append(s[i][j])
for i in range(0,len(duplicates)):
iarr = duplicates[i]//10
jarr = duplicates[i]%10
linesum=sum(s[i])
difference=15-linesum
totaldifference = totaldifference + difference
return totaldifference
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
s = []
for _ in range(3):
s.append(list(map(int, input().rstrip().split())))
result = formingMagicSquare(s)
fptr.write(str(result) + '\n')
fptr.close()
【问题讨论】:
-
现在你应该使用调试器逐行查看哪个做了你没想到的事情。
-
有没有python的调试器可以像visual studio一样逐行调试?
-
@GhasemBanazadeh 好吧,Visual Studio Code 做起来很像 Visual Studio ;)
-
使用的算法是什么?回溯?
标签: python magic-square