美文网首页
算法训练营 -- 最近点对

算法训练营 -- 最近点对

作者: 拜仁的月饼 | 来源:发表于2019-06-13 15:29 被阅读0次

描述

给定n个二维平面上的点,求距离最近的一对点,输出他们的距离。

输入

第一行包含一个正整数n。

接下来n行,每行包含两个整数x,y,表示一个点的坐标。

输出

输出距离最近的一对点的距离,保留两位小数。

样例输入

    10
    7 9
    -8 -1
    -3 -1
    1 4
    -3 9
    6 -4
    7 5
    6 6
    -6 10
    0 8

样例输出

1.41

样例解释

距离最近的点为7和8,距离为√(7−6)2+(5−6)2=√2≈1.41(7-6)2+(5-6)2=2≈1.41

提示

分治求最近点对。当然也可以用kdtree,虽然应该会超时。

代码实现

法1:暴力求解(OJ上只能得55分,因为超时)

#!/usr/bin/env pypy3
# encoding=UTF-8

from math import sqrt, pow

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

def dis2p(a, b):
    d = sqrt(pow((b.x - a.x), 2) + pow((b.y - a.y), 2))
    return d

def getAnswer(points):
    l = len(points)
    dp = list()
    for i in range(l - 1):
        dl = list()
        for j in range(i + 1, l):
            dis = dis2p(points[i], points[j])
            dl.append(dis)
        dl.sort()
        dp.append(dl[0])
    dp.sort()

    return dp[0]

if __name__ == '__main__':
    n = int(input())
    pts = list()
    for i in range(n):
        x, y = map(int, input().split())
        p = Point(x, y)
        pts.append(p)
    a = getAnswer(pts)
    b = float("%.2f"%a)
    print(b)

法2:DiaC



References

  1. GeeksforGeeks上的相关介绍

相关文章

  • 算法训练营 -- 最近点对

    描述 给定n个二维平面上的点,求距离最近的一对点,输出他们的距离。 输入 第一行包含一个正整数n。 接下来n行,每...

  • 最近点对

    知识讲解:http://blog.csdn.net/lonelycatcher/article/details/7...

  • 分冶法之最近对问题

    最近对问题 给定一个点集,找出最近对的距离 如果用穷解法算法复杂度时O(n^2)如果用分冶法,算法复杂度只有O(n...

  • kNN算法/K近邻算法

    深度学习:KNN算法/k近邻算法 算法介绍   即在一个数据集当中寻找其最近的K个点(欧拉距离),由这最近的K个点...

  • 《python算法教程》Day10 - 平面最近点对问题

    今天是《python算法教程》的第10篇读书笔记。笔记的主要内容是使用python实现求最小点对的时间复杂度为O(...

  • LeetCode:岛屿的个数(Swift)

    最近对算法突然来了兴趣,奈何大学学的数据结构算法已经丢完了,只有自己一点点的捡回来啰。言归正传,来看看LeetCo...

  • LeetCode:1688. 比赛中的配对次数

    最近因为参加了一个算法训练营......转LeetCode刷题了。 题目链接 https://leetcode-c...

  • MATLAB的KNN实现

    KNN算法概述:1.KNN算法是通过已有的数据,已有的标签,对新数据进行分类。2.分类依据:找最近的K个点,大部分...

  • ICP(迭代最近点)算法推导详解

    概述 ICP用来求解3D-3D的位姿估计问题。假设有一组配对好的3D点,例如对两幅RGB-D图像进行匹配,或者是E...

  • 对KMP算法的一些理解

    最近学到KMP算法,下面讲讲对KMP算法的一些个人理解,希望对大家有帮助! 对于KMP算法的理解: 整个KMP算法...

网友评论

      本文标题:算法训练营 -- 最近点对

      本文链接:https://www.haomeiwen.com/subject/ybksfctx.html