美团 笔试 8.20 定位题(曼哈顿距离)

感觉思路没问题,代码也看了好几遍,能过给的测例,可偏偏就是18%+RE错误了,求python大佬来看看

思路:
对每个点按曼哈顿距离求所有可能的点(在n*n格子内),然后对三个set求交集,再排序输出字典序最小的
代码:
n = int(input())
line1 = input()
line2 = input()
line3 = input()
line4 = input()

p1 = [int(x) for x in line1.split(" ")]
p2 = [int(x) for x in line2.split(" ")]
p3 = [int(x) for x in line3.split(" ")]
diss = [int(x) for x in line4.split(" ")]


def find(p, dis, n):
    x, y = p[0], p[1]
    ret = set()
    for i in range(0, dis+1):
        gapx = i
        gapy = dis-i
        for di in [[1, 1], [1, -1], [-1, 1], [-1, -1]]:
            tx = x+gapx*di[0]
            ty = y+gapy*di[1]
            if 1 <= tx <= n and 1 <= ty <= n:
                ret.add((tx, ty))
    return ret


def solver(p1, p2, p3, diss, n):
    ans = None
    possible1 = find(p1, diss[0], n)
    possible2 = find(p2, diss[1], n)
    possible3 = find(p3, diss[2], n)
    ans = possible1.intersection(possible2).intersection(possible3)
    ans = list(ans)
    ans.sort()
    return ans[0]


ans = solver(p1, p2, p3, diss, n)
print(f"{ans[0]} {ans[1]}")


#美团##美团笔试##笔试题目##做完美团2023秋招笔试,你还好吗#
全部评论
我也是18。。。蹲蹲大佬的回复
点赞 回复 分享
发布于 2022-08-25 10:31 北京
直接输出[2,1]也是通过18%
点赞 回复 分享
发布于 2022-08-22 23:44 广东
感觉没啥问题啊orz……
点赞 回复 分享
发布于 2022-08-20 18:26 北京
我也是18%超时
点赞 回复 分享
发布于 2022-08-20 15:46 上海
巧了,我也是18%
点赞 回复 分享
发布于 2022-08-20 15:33 浙江

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务