三维空间找最近点
程序员文章站
2022-04-03 23:19:49
...
菜鸡只会数据很小很小的做法
给定三维空间上n个点,每个点都有xi,yi,zi三个坐标值.找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的.
输入描述:
第一行输入整数n,(2<=n<=1e5)
第二行到第n+1行,每行输入xi,yi,zi三个整数,代表第i个点的坐标(-1e4<=xi,yi,zi<=1e4)
输出描述:
输出最近点对的距离,保留小数点后三位
最近的点应该也许大概可能会出现在坐标和最小点里面(或许一定)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sc(a) scanf("%d",&a);
const int maxn=1e5+5;
struct stu
{
double s1=0,s2=0,s3=0,sumn=0;
bool operator <(const stu&b)
{
return sumn<b.sumn;
}
}st[maxn];
double ds(stu a,stu b)
{
double sum=0;
sum=sqrt((a.s1-b.s1)*(a.s1-b.s1)+(a.s2-b.s2)*(a.s2-b.s2)+(a.s3-b.s3)*(a.s3-b.s3));
return sum;
}
int main()
{
int n;
sc(n);
double min1=0x3f3f3f3f;
for(int i=1;i<=n;i++)
{
cin>>st[i].s1>>st[i].s2>>st[i].s3;
st[i].sumn=st[i].s1+st[i].s2+st[i].s3;
}
sort(st+1,st+1+n);
for(int i=1;i<=n;i++)
for(int j=i+1;j<i+29;j++) //这里就纯瞎搞了哈哈
{
double sum1=ds(st[i],st[j]);
min1=min(min1,sum1);
}
printf("%.3f",min1);
}
上一篇: 绘制直角坐标系
推荐阅读
-
C#通过KD树进行距离最近点的查找
-
C#通过KD树进行距离最近点的查找
-
Winform中设置ZedGraph鼠标双击获取距离最近曲线上的点的坐标值
-
找大师唠点冷料乐乐
-
二叉树找最近祖先节点和到某一节点的路径
-
已知十个经纬度点怎么来判断其中一个经纬度点(确定)距离最近的经纬度点 已知十个经纬度点怎么来判断一个经纬度点(确定)距离这十个经纬度点最近的经纬度点 或者判断其中一个经纬度点(确定)距离这十个经纬度点
-
分治 平面上的最近点对
-
Winform中设置ZedGraph鼠标悬浮显示举例最近曲线上的点的坐标值和X轴与Y轴的标题
-
最近总是找springboot 的配置文件。不想每次创建新项目都找,所以记录一下。
-
乐视手机维修点最近点:总部两三月未供配件