1. 矩陣轉換
    1. 題目
    2. 解題

矩陣轉換

矩陣轉換

APCS歷屆

題目

PDF
來看一下第二題,簡單來說我們就是有兩種選擇,一種是旋轉一個是翻轉,不過要特別注意的是他是請我們推回來並不是推過去喔~

解題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 3次
# 寫兩個function 再去做
def fan(): #翻轉 傳出arr
row = len(list1) #3
colu = len(list1[0]) #2
list2 = [[]for i in range(row)]
#n = 0
for i in range(colu):
n = 0
for j in range(row - 1, -1, -1):
list2[n].append(list1[j][i])
n += 1
#print(list2)

return list2

def shan(): #做旋轉 傳出arr
row = len(list1) #2
colu = len(list1[0]) #3
list2 = [[]for i in range(colu)]
n = 0
for i in range(colu - 1, -1, -1):
for j in range(row):
list2[n].append(list1[j][i])
n += 1
#print(list2)

return list2

#list1 = [[3, 6,], [2, 5], [1, 4]]
#print(fan())
#list1 = [[1, 2, 3], [4, 5, 6]]
#print(shan())
r, c, m = 3, 2, 2
r, c, m = map(int, input().split())
list1 = [[3, 3], [2, 1], [1, 2]]
list1 = []
for i in range(r):
list1.append(list(map(int, input().split())))
list3 = [0, 1]
list3 = list(map(int, input().split()))
for i in range(len(list3) - 1, -1, -1):
if list3[i] == 0:
list1 = shan()
else:
list1 = fan()
print(len(list1), len(list1[0]))
for i in list1:
print(*i, sep = " ")
'''list1 = [[3, 3], [2, 1], [1, 2]]
#list1 = shan()
list1 = fan()
list1 = shan()'''

我的想法就是寫兩個function,一個是旋轉,右下會跑到右上(反著推),所以我們就依序寫迴圈去排,另外上下顛倒就直接給定另一個list2,反著移進去就好了,最後再測試0 or 1去決定跑哪個function。