【发布时间】:2021-03-05 11:09:03
【问题描述】:
给定一个维度为 NxN 的方阵 A。您需要对矩阵 A 应用以下给定的 3 个操作。
Rotation:表示为 R S 其中 S 是 {90, 180, 270, 360, 450, ...} 中的整数,表示要旋转的度数。您需要将矩阵 A 沿顺时针方向旋转角度 S。旋转角度 (S) 始终为 90 度的倍数。
更新:它表示为 U X Y Z。在初始矩阵 A(如输入中给出的)中,您需要将行索引 X 和列索引 Y 处的元素更新为值 Z。 更新后,之前的所有旋转操作都必须应用于更新后的初始矩阵。
查询:表示为Q K L。需要打印矩阵A的行索引K和列索引L处的值。
这是我的问题。这是我到目前为止所做的:
def ReadMatrix():
matrix = []
for i in range(int(input())):
row = [int(j) for j in input().split()]
matrix.append(row)
return matrix
def RotateMatrix(matrix, degrees):
n = len(matrix[0])
rotations = (degrees // 90) % 4
for r in range(rotations):
temp_matrix = []
for i in range(n):
column = [row[i] for row in matrix]
column.reverse()
temp_matrix.append(column)
matrix = temp_matrix
return matrix
matrix = ReadMatrix()
rotation = 0
while True:
line = input().split()
if line[0] == "-1":
break;
elif line[0] == "R":
rotation += int(line[1])
matrix = RotateMatrix(matrix, int(line[1]))
elif line[0] == "U":
matrix[int(line[1])][int(line[2])] = int(line[3])
matrix = RotateMatrix(matrix, rotation)
elif line[0] == "Q":
print(matrix[int(line[1])][int(line[2])])
else:
print(line[0])
exit(1)
我得到了这个输入的正确输出:
2
1 2
3 4
R 90
Q 0 0
Q 0 1
R 90
Q 0 0
U 0 0 6
Q 1 1
-1
但是我没有得到这个输入的正确输出
2
5 6
7 8
R 90
Q 0 1
R 270
Q 1 1
R 180
U 0 0 4
Q 0 0
-1
第二个输入得到的输出是5 8 5,但正确的输出是5 8 8。
【问题讨论】:
-
我们为什么要使用大写字母?
标签: python python-3.x matrix