1.問題の説明:
文字は、いくつかの美しいグラフィックを形成するために使用することができるアン例を以下に示す:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
。これは、5行7列のグラフである。このグラフ出力n行m列のグラフの法則を見つけて下さい。
入力形式
出力するグラフィックの行数と列数をそれぞれ表す2つの整数nとmを含む1行を入力します。
出力フォーマット
グラフィック用に、各m文字のn行を出力します。
サンプル入力
5 7
サンプル出力
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
データの規模と慣習
1 <= n、m <= 26
出典:http://lx.lanqiao.cn/problem.page?gpid = T7
2.思考分析:
①質問を分析すると、最初は現在の行に対応する文字を文字Aまで逆の順序で出力し、次に現在の行の残りの文字を出力することであることがわかります。主なアイデアは正しいですが、いくつかのテストケース主に行が考慮されていないために通過していません。列の数よりも数が多い可能性があるため、現時点では、文字Aまで逆の順序で出力することはできません。行数が列数より大きいかどうかの始まり。行数が列数Countより大きい場合は、現在の行の出力文字数をカウントする変数を設定する必要があります。目的カウントの目的は、出力文字の数を列数以下に制御することです。
②Python言語を使用しているため、chr関数とord関数を使用して文字とasci値を変換します。chr関数はascii値を対応する文字に変換し、ord関数は現在の文字に対応するascii値を取得できます。
3.コードは次のとおりです。
if __name__ == '__main__':
n, m = map(int, input().split())
for i in range(n):
# 行数大于了列数的时候时候那么就需要控制每行输出字母的个数
if n > m:
j, count = i, 0
while j >= 0 and count < m:
print(chr(j + ord("A")), end="")
j -= 1
count += 1
else:
for j in range(i, -1, -1):
print(chr(j + ord("A")), end="")
for j in range(1, m - i):
print(chr(j + ord("A")), end="")
print()