一、问题描述
在某城市有 n 座摩天大楼,找到两座楼 p 和 q,使其相互距离最短。在某城市有 n 座摩天大楼,找到两座楼 p 和 q,使其相互距离最短。换句话说,希望在一个平面中找到具有这样性质的两点 p1=(x1,y1)和 p2=(x2,y2),使它们间的距离
在所有点对间距离最小。
二、解题思路
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