美团 笔试 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]}")


深信服公司福利 851人发布