如何解决如何获得与给定k元素匹配的内层
旋转矩阵环 给定一个 M*N 阶矩阵和一个值 K,编写一个程序将矩阵的每个环顺时针旋转 K 个元素。如果任何环中的元素小于或等于 K,则不要旋转该环。 输入
输入的第一行是两个空格分隔的整数,表示 M 和 N。 接下来的 M 行将包含 N 个空格分隔的整数。 下一行将包含一个整数,表示 K。 输出
通过将矩阵旋转 K 个元素,输出应该是 M*N 矩阵。 说明
例如,如果给定的 M 和 N 分别为 4 和 4。如果矩阵元素是 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 如果给定的 K 是 3。将矩阵的每个环旋转 3 个元素。 在上面的矩阵中,元素 (1,2,3,4,8,12,16,15,14,13,9,5) 是一个环,类似地,元素 (6,7,11,10) 将做一个戒指。 因此,将每个环顺时针方向旋转 3 个元素将得到 (13,5,1,14) 和 (10,6,11)。所以输出应该是
13 9 5 1
14 7 11 2
15 6 10 3
16 12 8 4
我的代码:
M,N = input().split(' ')
M,N = int(M),int(N)
matrix = []
for _ in range(M):
row = [int(x) for x in input().split(' ')]
matrix.append(row)
K = int(input())
values = matrix[0][:-1] + [x[-1] for x in matrix][:-1] + matrix[-1][::-1][:-1] + [x[0] for x in matrix][::-1][:-1]
values = values[-K:] + values[:-K]
output = matrix
idxs = [(0,j) for j in range(N)][:-1] + [(i,N - 1) for i in range(M)][:-1] + [(M - 1,j) for j in range(N)][::-1][:-1] + [(i,0) for i in range(M)][::-1][:-1]
idx = 0
for i,j in idxs:
output[i][j] = values[idx]
idx += 1
for row in output:
print(*row)
没有得到预期的测试用例输出,测试用例是
Test case 1
Input
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
3
Output
13 9 5 1
14 7 11 2
15 6 10 3
16 12 8 4
Test case 2
Input
3 4
1 2 3 4
10 11 12 5
9 8 7 6
2
Output
9 10 1 2
8 11 12 3
7 6 5 4
if Input
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
3
MY OutPut:
13 9 5 1
14 6 7 2
15 10 11 3
16 12 8 4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。