题面描述:
找呀 找呀 找朋友
找到一个好朋友
敬个礼 握握手
你是我的好朋友
春天到了,大家都找自己的好朋友出去玩耍,然而大家都不甘示弱,要比比谁最
先能找到自己的好朋友。 给出一个 n×m 的地图,上面有 k 对好朋友,分别用‘a’ ,
‘A’ ,‘b’ ,‘B’, ……表示。其中大写字母‘A’和小写字母‘a’是一对好朋友。
小写字母在单位时间内可以向上、向下、向左或向右移动一格(可以穿过障碍物),
大写字母不能移动。请问最快找到好朋友(对应的大写字母)的小写字母是谁?
输入数据:
第一行有一个整数 t (1 ≤ t ≤ 100) ,表示有 t 组数据。
对于每组数据:
第一行有三个正整数 n , m, k (1 ≤ n, m ≤ 100, 1 ≤ k ≤ 26),表示地图的行数、列数
和好朋友的对数;
接下来有 n 行,每行有一个长为 m 的字符串,表示地图。 '.'表示什么都没有,对
应的大写字母和小写字母表示一对好朋友。
输出数据:
输出 t 行,每行一个小写字母,表示最快找到好朋友的小写字母。
如果有多个小写字母同时找到好朋友,则输出字典序最小的小写字母。
样例输入:
3
2 5 2
aBA…
…b
3 4 3
a…A
b.B.
c.C.
4 4 2
b…A
.B…
…
…a
样例输出:
a b b
def abd(x,y,z):#x输入是二十六个大写字母中的一个y是列表 z是行列信息
if x in y:
xlow=y.index(x)
xlow_x=xlow//int(z[1])#取整除 一个反斜杠为直接除
xlow_y=xlow%int(z[1])#取余除
xlarge = chr(ord(x)+32)
xlarge = y.index(xlarge)
xlarge_x = xlarge //int(z[1])
xlarge_y = xlarge % int(z[1])
anser = abs(xlarge_x-xlow_x)*abs(xlarge_x-xlow_x)+abs(xlarge_y-xlow_y)*abs(xlarge_y-xlow_y)#以坐标差算距离
#print(anser)
return anser
else:
return 20000
t = int(input())
answer = []
for i in range(t):
teamnum = list(input().split())#输入矩阵信息
temadata=[]
for ii1 in range(int(teamnum[0])):
temadata += list(input())#输入第一行 每一行为字符串形式‘每一个字符’
length=[]
for ii in range(65,97):
xx=abd(chr(ii),temadata,teamnum)
length.append(xx)#返回26个字母的距离列表
#print(length)
an=length.index(min(length))
bn=list(range(97,123))
bn1=chr(bn[an])
answer.append(bn1)
for iii in answer:
print(iii)