旋转矩阵环的第一行出现错误



在这段代码中,我收到了以下错误

Enter M: 
Traceback (most recent call last):
File "main.py", line 1, in <module>
M = int(input("Enter M: "))
ValueError: invalid literal for int() with base 10: '4 4'

问题在下方

给定一个M*N阶矩阵和一个值K,编写一个程序将矩阵的每个环顺时针旋转K个元素。如果在任何一个环中有小于或等于K个元素,则不要旋转该环。

输入

第一行输入将是两个空格分隔的整数,表示M和N。接下来的M行将包含N个空格分隔的整数。下一行将包含一个整数,表示K.

输出

通过将矩阵旋转K个元素,输出应该是M*N矩阵。

解释

例如,如果给定的M和N分别为4和4。如果矩阵元素1 2 3 45 6 7 89 10 11 1213 14 15 16如果给定的K是3。将矩阵的每个环旋转3个元素。在上述矩阵中,元素(1、2、3、4、8、12、16、15、14、13、9、5(是环,类似地,元素(6、7、11、10(将构成环。因此,通过将每个环沿顺时针方向旋转3个元件,将得到(13,9,5,1,2,3,4,8,12,16,15,14(和(10,6,7,11(。所以输出应该是13 9 5 114 7 11 215 6 10 316 12 8 4

代码低于

M = int(input("Enter M: "))
N = int(input("Enter N: "))

A = [[0]*N for x in range(M)]
for i in range(0, M):
for j in range(0, N):
A[i][j] = int(input())

K = int(input("Enter K: "))
Ring = (min(M, N) + 1) // 2

count = 0
r = 0
d = 0
l = 0
u = 0

for i in range(Ring):
size = 2*(M-2*i) + 2*(N-2*i) - 4
if M-2*i == 1:
size = N-2*i
if N-2*i == 1:
size = M-2*i
if size == 0:
size = 1
if size <= K:
continue
B = [0] * size
startX = i
startY = i
for r in range(i, N-i):
B[count] = A[startX][r]
count += 1
for d in range(startY + 1, M-i):
B[count] = A[d][r]
count += 1
l = r - 1
if M-(2*i) > 1 and N-(2*i) > 1:
while l >= i:
B[count] = A[d][l]
count += 1
l -= 1
u = d - 1
while u >= i + 1:
B[count] = A[u][l+1]
count += 1
u -= 1
for t in range(K):
temp = B[size - 1]
j = size - 1
while j != 0:
B[j] = B[j-1]
j -= 1
B[0] = temp

count = 0
r = 0
d = 0
l = 0
u = 0

for r in range(i, N-i):
A[startX][r] = B[count]
count += 1
for d in range(startY + 1, M-i):
A[d][r] = B[count]
count += 1
l = r - 1
if M-(2*i) > 1 and N-(2*i) > 1:
while l >= i:
A[d][l] = B[count]
count += 1
l -= 1
u = d - 1
while u >= i + 1:
A[u][l+1] = B[count]
count += 1
u -= 1

count = 0
r = 0
d = 0
l = 0
u = 0

print("")
for i in range(M):
for j in range(N):
print(A[i][j], end = "t")
print("")

而且没有得到预期的测试用例输出,测试用例是

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

请帮助我任何蟒蛇专家。

输入数据的代码(问题的输入部分(:

M, N = [int(x) for x in input("Enter M N: ").split(' ')]
nums = []
for i in range(0, M):
nums.append([int(x) for x in input(f"Enter {i} row with {N} space-separated integers: ").split(' ')])
K = input("Enter integer K: ")
print(f"You entered:nM={M},N={N}")
print(f"Lists of entered space-separated integers is:n{nums}")
print(f"K={K}")

输出

Enter M N: 3 3
Enter 0 row with 3 space-separated integers: 1 2 3
Enter 1 row with 3 space-separated integers: 4 5 6
Enter 2 row with 3 space-separated integers: 7 8 9
Enter integer K: 10
You entered:
M=3,N=3
Lists of entered space-separated integers is:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
K=10

最新更新