平面点对问题------解法1:暴力打擂法

本文介绍了使用C语言解决平面点对间距离最小问题的方法,包括定义坐标结构体、随机生成点坐标、计算两点距离及找出最短距离的算法。通过循环结构的嵌套应用实现这一暴力打擂法。
摘要由CSDN通过智能技术生成

一、问题描述

在某城市有 n 座摩天大楼,找到两座楼 p 和 q,使其相互距离最短。在某城市有 n 座摩天大楼,找到两座楼 p 和 q,使其相互距离最短。换句话说,希望在一个平面中找到具有这样性质的两点 p1=(x1,y1)和 p2=(x2,y2),使它们间的距离

 欧几里得距离( Euclidean distance)也称欧式距离,它是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离,这里表示二维空间平面点距。

在所有点对间距离最小。


二、解题思路

1.定义一个结构体类型表示摩天大楼的位置坐标。
2. 编写一个函数用于随机生成 n 座摩天大楼的位置坐标。
3. 编写一个函数用于求两点之间的距离。
4. 编写一个函数求 n 个点间的最短距离。
5. 主函数中调用以上三个函数,并输出:
(1) 所有摩天大楼的位置坐标;
(2) 距离最近的二座大楼及它们之间的距离;

三、代码实现

#include <stdlib.h> //包含了需要的随机函数rand()、srand()
#include <stdio.h>  //包含有一些输入输出函数
#include <time.h>  //使用当前时钟做种子
#include <math.h>

#define N  100    //摩天大楼的数量为 N 座
 struct point         //定义结构体数组存放 N 座摩天大楼的位置坐标
{
   
    int x;
    int y;
}a[N];

double length;  //定义三个全局变量用于存储最近两楼坐标及间距
 int  b1, b2;

//函数声明
void Building_Location();                       //随机生成 N 座大楼的位置
double Point_Distance(point n1
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值