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