時間限制:1.0s 記憶體限制:512.0mb
問題描述
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。
輸入格式
輸入第一行是兩個不超過200的正整數m, n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。
輸出格式
輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用乙個空格分隔,行末不要有多餘的空格。
樣例輸入
3 31 2 3
4 5 6
7 8 9
樣例輸出
1 4 7 8 9 6 3 2 5
樣例輸入
3 21 2
3 45 6
樣例輸出
1 3 5 6 4 2
思路:
這道題和 「pat乙級 螺旋矩陣」很類似
我們把矩陣分為如下的色塊
找出規律:
設行為m,列為n,圈數為l
矩陣有多少圈?
l = min(m, n)//2
所以每一圈的起點也知道了,即為(l - 1, l - 1), 我們令i = l - 1
各個色塊的規律
red: (i,i)——(m - 1 - i, i)
orange:(m - 1 - i, i +1)——(m - 1 - i, n - 1 - i)
yellow:(m - 2 - i,n - 1 - i)——(i, n - 1 - i)
green:(i, n - 2 - i)——(i, i + 1) (倒序)
數到矩陣中間的特殊情況:
m > n and n 為奇數,最後要縱向輸出
m < n and m 為奇數, 最後要橫向輸出
**:
tmp =
input()
.split(
)m =
eval
(tmp[0]
)n =
eval
(tmp[1]
)square =
for i in
range
(m):
t =list
(map
(int
,input()
.split())
)minn =
min(m, n)
l =(
min(m, n)+1
)//2flag =
0# 格式控制符 第乙個數前面不加空格
for i in
range
(l):
if i == l -
1and
(minn +1)
%2==0
:# 橫向
if m < n:
for j in
range
(i, n - i)
:if flag ==0:
print
('{}'
.format
(square[i]
[j])
, end='')
flag =
1else
:print
(' {}'
.format
(square[i]
[j])
, end='')
# 縱向
else
:for j in
range
(i, m - i)
:if flag ==0:
print
('{}'
.format
(square[j]
[i])
, end='')
flag =
1else
:print
(' {}'
.format
(square[j]
[i])
, end='')
else
:# down
for j in
range
(i, m - i)
:if flag ==0:
print
(square[j]
[i], end='')
flag =
1else
:print
(" {}"
.format
(square[j]
[i])
, end='')
# right
for j in
range
(i +
1, n - i)
:print
(' {}'
.format
(square[m -
1- i]
[j])
, end='')
# up
for j in
range
(m -
2- i, i -1,
-1):
print
(' {}'
.format
(square[j]
[n -
1- i]
), end='')
# left
for j in
range
(n -
2- i, i,-1
):print
(' {}'
.format
(square[i]
[j])
, end=
'')
藍橋杯 基礎練習 回形取數
問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用...
藍橋杯 基礎練習 回形取數
時間限制 1sec 記憶體限制 128mb 題目描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出 輸出只有一行,共mn個數,為...
藍橋杯 基礎練習 回形取數
問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用...