資源限制
時間限制:1.0s 記憶體限制:512.0mb
根據輸入的正整數n (1 公尺字形由乙個(2n-1)*(2n-1)的矩陣組成,矩陣包含從大寫a開始的n個字母
例如:n=3時,包含a,b,c;n=4時,包含a,b,c,d。
矩陣的正中間為n個字母中字典序最大的那個,從這個字母開始,沿著西北、正北、東北、正西、正東、西南、正南、東南八個方向各有一條由大寫字母組成的直線。並且直線上的字母按字典序依次減小,直到大寫字母a。
矩陣的其它位置用英文句號.填充。
樣例輸入一
3樣例輸出一
a.a.a
.bbb.
abcba
.bbb.
a.a.a
樣例輸入二
4樣例輸出二
a..a..a
.b.b.b.
..ccc..
abcdcba
..ccc..
.b.b.b.
a..a..a
分析:
我們把輸出的圖形分成3塊考慮。
第一塊是上面的n-1行,第二塊是中間的一行回文串,第三行是下面的n-1行,第一塊和第三塊是一樣的,乙個是正序,乙個是逆序。
我們首先建個全是點號的二維列表,然後依次發現每一行輸出字母與行號的關係即可。
while
true
:try
: n =
int(
input()
) s1 =[[
'.'for i in
range(2
*n-1)]
for j in
range
(n-1)]
for i in
range
(n-1):
for j in
range
(i,2
*n-1
-i,n-
1-i)
: s1[i]
[j]=
chr(
ord(
'a')
+i)#上半部分整好了
s2 =
['.'
for i in
range(2
*n-1)]
for i in
range
(n):
s2[i]
=chr
(ord
('a'
)+i)
s2[2*n-i-2]
=chr
(ord
('a'
)+i)
#中間一行整好
for i in
range
(n-1):
for j in
range(2
*n-1):
print
(s1[i]
[j],end='')
print(''
)for num in s2:
print
(num,end='')
print(''
)for i in
range
(n-2,-
1,-1
):for j in
range(2
*n-1):
print
(s1[i]
[j],end='')
print(''
)except
:break
程式設計小白記錄成長 試題 演算法訓練 輸出公尺字形 藍橋杯
題目描述 資源限制 時間限制 1.0s 記憶體限制 512.0mb 根據輸入的正整數n 1 公尺字形由乙個 2n 1 2n 1 的矩陣組成,矩陣包含從大寫a開始的n個字母 例如 n 3時,包含a,b,c n 4時,包含a,b,c,d。矩陣的正中間為n個字母中字典序最大的那個,從這個字母開始,沿著西北...
演算法訓練 輸出公尺字形
根據輸入的正整數n 1 公尺字形由乙個 2n 1 2n 1 的矩陣組成,矩陣包含從大寫a開始的n個字母 例如 n 3時,包含a,b,c n 4時,包含a,b,c,d。矩陣的正中間為n個字母中字典序最大的那個,從這個字母開始,沿著西北 正北 東北 正西 正東 西南 正南 東南八個方向各有一條由大寫字母...
演算法訓練 輸出公尺字形
根據輸入的正整數n 1 公尺字形由乙個 2n 1 2n 1 的矩陣組成,矩陣包含從大寫a開始的n個字母 例如 n 3時,包含a,b,c n 4時,包含a,b,c,d。矩陣的正中間為n個字母中字典序最大的那個,從這個字母開始,沿著西北 正北 東北 正西 正東 西南 正南 東南八個方向各有一條由4大寫字...