找朋友

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值