三维空间最近点

三维空间最近点
菜鸡只会数据很⼩很⼩的做法
给定三维空间上n个点,每个点都有xi,yi,zi三个坐标值.出其中的⼀对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最⼩的.
输⼊描述:
第⼀⾏输⼊整数n,(2<=n<=1e5)
dna测序第⼆⾏到第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);
}
36xp

本文发布于:2024-09-23 12:23:59,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/178127.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:距离   可能   个点   坐标   输出   点对   保留   代表
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议