1. 问题描述:
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26
来源:http://lx.lanqiao.cn/problem.page?gpid=T7
2. 思路分析:
① 分析题目可以知道首先是从当前行对应的字母逆序输出一直到字母A,然后输出当前行中剩余的字母,主要的思路是正确的,但是有一些测试用例没有通过,主要是没有考虑到行数是有可能大于列数的情况,所以这个时候就不能够在一开始逆序输出的时候一直到字母A,我们需要在一开始的时候需要先判断一下行数是否大于列数如果行数大于列数那么就需要设置一个变量来计数当前当前行输出字母的个数,计数的目的是为了使输出字母的个数控制在小于等于列数的情况
② 因为使用的是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()