#CCF-称检测点查询-202009-1

在这里插入图片描述
查询距离自己最近的三个核酸检测点
#某市设有 n个核酸检测点,编号从1到 n,其中 i号检测点的位置可以表示为一个平面整数坐标 (x,y)
#为方便预约核酸检测,请根据市民所在位置 (X,Y),查询距其最近的三个检测点。
#多个检测点距离相同时,编号较小的视为更近。

#20200901
#称检测点查询
#某市设有 n个核酸检测点,编号从1到 n,其中 i号检测点的位置可以表示为一个平面整数坐标 (x,y)
#为方便预约核酸检测,请根据市民所在位置 (X,Y),查询距其最近的三个检测点。
#多个检测点距离相同时,编号较小的视为更近。
#错误原因:直接排序取最小值,第二小、第三小时,重复距离可能出现选择重复点
nXY = input().split()
n = int(nXY[0])
X = int(nXY[1])
Y = int(nXY[2])
axis = []
for i in range(n):
    xy = input().split()
    xy = [int(j) for j in xy]
    axis.append(xy)
dis = []
for i in range(n):
    distance = (X-axis[i][0])**2 + (Y-axis[i][1])**2 #求取距离,可以不用开平方根,不影响大小的比较
    dis.append(distance)

dis_sort = dis
for i in range(3):
    min_dis = min(dis_sort) #找到最小值
    min_index = dis.index(min_dis)
    dis_sort[min_index] = max(dis)+1 #将最小值变为最大值+1,去除再次被选的可能
    print((min_index+1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值