题面描述
找呀 找呀 找朋友
找到一个好朋友
敬个礼 握握手
你是我的好朋友
春天到了,大家都找自己的好朋友出去玩耍,然而大家都不甘示弱,要比比谁最先能找到自己的好朋友。
给出一个 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
心得:
1.a 的 ascii 是 97, A 的 ascii 是 65
2.二者距离位 横坐标相减的绝对值 + 纵坐标相减的绝对值
T = int(input())
for t1 in range(T) :
ns = [int(item) for item in input().split()]
nm = []
for i in range(ns[0]):
temp = input()
nm.append(temp)
step1 = []
step2 = []
for i in range(ns[2]):
check = 0
for r in range(ns[0]):
for c in range(ns[1]):
if nm[r][c]==chr(97+i):
step1.append([r,c])
check +=1
if nm[r][c]==chr(65+i):
step2.append([r,c])
check +=1
if check == 2:
break
if check == 2:
break
results = []
for i in range(len(step1)):
results.append(abs(step2[i][0]-step1[i][0])+abs(step2[i][1]-step1[i][1]))
minIndex = 0
for i in range(1, len(results)):
if results[i]<results[minIndex]:
minIndex = i
print(chr(97+minIndex))