枚举法找出距离最近的两个点

本文介绍了如何使用枚举法解决编程之美和HDU中的一道问题,即在平面上给定多个点,找出距离最近的两个点。通过创建二维数组存储点的坐标,遍历所有点对并比较距离,更新最小距离和对应点的坐标。这种方法简单直接,适合练手和参考。
摘要由CSDN通过智能技术生成

在编程之美和HDU有这么一道题目:

给定平面上N个点的坐标,找出距离最近的两个点。如:有这些个点对:
(-1, 3)
(-1, -1)
(1, 1)
(2, 0.5)
(2, -1)
(3, 3)
(4, 2)
(4, -0.5)
则最近的两点应该为:(1,1)和(2, 0.5)

解决的方有多种,网上参考例子最多的是分而治之的方法,今天我用最简单粗暴的枚举法来解决这道题。一来是为了最近找工作笔试练手,二来是了给亲爱的伸手党童鞋一个参考。

思路:
把每个点的横纵坐标放在N行2列的二维数组里边。每一行的第0列为点的横坐标,第1列为点的纵坐标。设立一个变量minDistance记录距离最短距离值,p1记录最短距离的起始点,p2记录最短距离的终点。从第0列开始,遍历第i个点和j个点之间的距离,如果这亮点的距离小于我们的标杆minDistance,则更新minDistance的值,并记录下i和j的下标到p1和p2中。
这里写图片描述

import java.util.Scanner;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值