一维最接近点对问题

这篇文章详细描述了一个编程任务,利用C++实现找出x轴上点对间最小距离的算法,通过输入点的位置并进行排序来计算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给定x轴上n个点,找其中的一对点,使得在n个点的所有点对中,该点对的距离最小。严格地说,最接近点对可能多于1对,为了简单起见,这里只限于找其中的一对。

输入

输入第一行为点的个数n(2≤n≤60 000);接下来n个数字,表示n个点在x轴上的位置。

输出

输出仅一行,为一个实数,表示最接近点对的距离。

AC代码

#include <bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
double s[100];
double mn;

int main(){
    int n;
    while(~scanf("%d",&n)){
        for(int i=0;i<n;i++){
            scanf("%lf",s+i);
        }
        sort(s,s+n);
        mn=inf;
        for(int i=0;i<n-1;i++){
            mn=s[i+1]-s[i]>mn?mn:s[i+1]-s[i];
		}
        cout<<mn;
        break;
    }
    return 0;
}

运行结果

(暂不展示)

有一天偶遇佛祖,佛祖说:我可以给一个愿望。 我说:那让每个赞我的人健康快乐。 佛祖说:可以,不过只有四天。 我说:好,就春天,夏天,秋天,冬天。 佛祖说:不行,就三天。 我说:好,就昨天,今天,明天。 佛祖说:不行,就二天。 我说:好,就白天,黑天。 佛祖说:不行,就一天。 我说;好,就每一天。 佛祖哭着说好,就让赞你的人开心健康每一天吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值