📅  最后修改于: 2023-12-03 15:37:15.320000             🧑  作者: Mango
本题要求实现一个程序来给定一个整数 n,输出一个 n x n 的矩阵,该矩阵是一个以顺时针方向旋转的数字矩阵。
输入共一行,为一个整数 n,表示欲输出的矩阵的行数与列数。
输出共 n 行,每行 n 个数字,代表所求的矩阵。每两个相邻的数字间应有一个空格。
4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
顺时针旋转输出数字矩阵,可以分为以下四个步骤:
重复执行上述步骤,直到矩阵中所有元素被输出为止。
def clockwise_matrix(n):
res = [[0]*n for _ in range(n)]
cur_num = 1
left, top, right, bottom = 0, 0, n-1, n-1
while left <= right and top <= bottom:
for col in range(left, right+1):
res[top][col] = cur_num
cur_num += 1
top += 1
for row in range(top, bottom+1):
res[row][right] = cur_num
cur_num += 1
right -= 1
for col in range(right, left-1, -1):
res[bottom][col] = cur_num
cur_num += 1
bottom -= 1
for row in range(bottom, top-1, -1):
res[row][left] = cur_num
cur_num += 1
left += 1
return res
n = int(input())
matrix = clockwise_matrix(n)
for row in matrix:
print(" ".join(map(str, row)))
代码输出结果为:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
以上是本题的题意、思路和代码实现,希望能对您有所帮助。