📅  最后修改于: 2023-12-03 15:07:34.388000             🧑  作者: Mango
给定一个N * N的矩阵,要求按照顺时针方向,从外到内依次打印出矩阵各元素的值
输入的第一行为一个整数T,表示测试数据的组数。接下来的T行,每行包含两个整数N和X,其中N表示矩阵的维数,X为一个一维的长度为N * N的整数数组,其中每一行表示一行矩阵的元素。
对于每一组测试数据,按照从外到内的顺序依次输出矩阵的各个元素。
输入
2
3
1 2 3 4 5 6 7 8 9
4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
输出
1 2 3 6 9 8 7 4 5
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
此题可以使用模拟的方式来实现,从外到内一圈一圈的打印矩阵的元素。
for _ in range(int(input())):
n, a = int(input()), input().split()
for i in range(n):
for j in range(n):
i1, j1 = min(i, n - i - 1), min(j, n - j - 1)
k = min(i1, j1, n - i1 - 1, n - j1 - 1)
d = (n - 2 * k) ** 2 + i - k + (j - k) * (n - 2 * k)
print(a[d - 1], end=' ')
print()
其中,输入的一维数组a需要转换成二维矩阵才可以进行计算。
n, a = int(input()), input().split()
matrix = []
for i in range(n):
row = []
for j in range(n):
row.append(int(a[i * n + j]))
matrix.append(row)
输出使用end
参数为一个空格,因为在Python中,print
函数默认会输出换行符。