错误示范:
n,m = map(int,input().split())
c = ['A']*m
for i in range(n):
c[i] = 'A'
for j in range(i+1,m):
c[j]=chr(ord(c[j-1])+1)
if i>=1:
for k in range(i-1,-1,-1):
c[k]=chr(ord(c[k+1])+1)
#print(c,end='')
for l in range(m):
print(c[l],end='')
print()
错因:每行找到A的位置之后,开始向后产生字母,再向前产生字母。
举个栗子,hack数据:26 2
当行数大于列数的时候,A就会消失,那么找不到A就数组越界了(在k那里)。
正确解,只描述关系( abs(i-j) ),不用对应到位置。
n,m = map(int,input().split())
for i in range(n):
for j in range(m):
print( chr(ord('A')+abs(i-j)),end='' )
print()
出自: