找朋友:找呀 找呀 找朋友 找到一个好朋友 敬个礼 握握手 你是我的好朋友。春天到了,大家都找自己的好朋友出去玩耍,然而大家都不甘示弱,要比比谁最先能找到自己的好朋友。给出一个 n × m 的地图..

题面描述

找呀 找呀 找朋友
找到一个好朋友
敬个礼 握握手
你是我的好朋友
春天到了,大家都找自己的好朋友出去玩耍,然而大家都不甘示弱,要比比谁最先能找到自己的好朋友。
给出一个 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))   

猜你喜欢

转载自blog.csdn.net/tianxiefenxiang/article/details/107458083