【发布时间】:2025-11-28 00:20:03
【问题描述】:
我正在解决一个涉及遍历n x m matrix以之字形方式的问题,其中n and m可以是相同的数字或不同的数字,即我们将有正方形或矩形矩阵。
为了解决这个问题,我有一个main方法,它会遍历矩阵;在这个主方法中,我创建并调用moveDiagonallyUpwards 和moveDiagonallyDownwards 方法以曲折的方式移动。
我遇到的问题是,当我将 row 和 col 作为参数从 main 方法传递给这两个其他方法时,在这些方法中我更新 row 和 col,例如+=1 或 -= 1。
当我返回主方法时,这些更改不会反映在主方法中。我也明白为什么会这样。
所以我的挑战是,如何将更新后的row 和col 传回主方法?我想过使用global class 来实现上述目的。
我的想法是创建一个单独的类来保存这些变量,如下所示,但我在 main 方法中调用和使用这些 global row and col 时遇到问题。
任何想法如何调整 main 方法 中的row and col 以实现上述目标?谢谢!
array = [
[1, 3, 4, 10],
[2, 5, 9, 11],
[6, 8, 12, 15],
[7, 13, 14, 16]
]
class matrixMovement:
def __init__(self,row=0,col=0,output=[]):
self.row = row
self.col = col
self.output = output
#Main Method
def zigzagTraverse(array):
output.append(array[row][col])
while array.row<= len(array)-1 or array.col<= len(array[0])-1:
if array.row< len(array)-1:
array.row += 1
output.append(array[row][col])
diagonalUp(row,col,array,output)
if col < len(array[0])-1:
col += 1
output.append(array[row][col])
diagonalDown(row,col,array,output)
return output
def diagonalUp(row,col,array,output):
while row > 0 and col< len(array[0])-1:
row -= 1
col += 1
output.append(array[row][col])
return matrixMovemenet(row,col,output)
def diagonalDown(row,col,array,output):
while row<len(array)-1 and col > 0:
col-= 1
row += 1
output.append(array[row][col])
return matrixMovemenet(row,col,output)
【问题讨论】:
-
传递给
zigzagTraverse的array是什么? -
让我补充问题