- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最近点对分治法
假设在一片金属上钻n 个大小一样的洞,如果洞太近,金属可能会断。若知道任意两个洞的最小距离,可估计金属断裂的概率。这种最小距离问题实际上也就是距离最近的点对问题。
如果不用分治法 ,问题非常容易解决。也就是蛮力法。
代码如下:
#include stdio.h
#include math.h
typedef struct TYPE
{
double x, y;
} Point;
float dist(Point a,Point b)
{
return (float)sqrt((float)(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
float nearest(Point* points, int n) {
float temp,near1=10000;
int i,j;
if(n==1) {
printf(不可能);
return 0;
}
else{
for(i=0; in-1; i++)
for(j=i+1; jn; j++){
{
temp=dist(points[i],points[j]);
near1=(near1temp)?temp:near1;
}
}
return near1;
}
}
int main()
{
int n, i;
double d;
printf(输入点的个数:);
scanf(%d, n);
Point a[10000];
while (n)
{
for (i = 0; i n; i++)
scanf(%lf%lf, (a[i].x), (a[i].y));
d = nearest(a,n);
printf(%.2lf\n, d);
scanf(%d, n);
}
return 0;
}
但是本题是用分治法,我也参考了网上很多资料,他们要求对纵坐标进行排序,可能是为了对求右边的问题的点扫描用for循环,但我发现那算法就不对,但愿是我的还没有完全明白按纵坐标排序的原因,
我参考的资料:/p-198711591.html?qq-pf-to=pcqq.c2c
代码如下:
#include stdio.h
#include stdlib.h
#include math.h
#define MAX_POINTS 100000 /*坐标点数的最大值 */
#define MAX_TEST 100 /*最大测试次数*/
typedef struct { /*定义坐标点*/
float x;
float y;
}Point;
float dist(Point a, Point b) { /*求两个坐标点之间的距离*/
return sqrt((float)(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
float Nearest(Point* points, int n){ /*求最小距Nearest的函数*/
float temp1,temp2,temp3,temp,nearest;
float left,right,d;
int i,j;
if(n==1) printf(距离为0); /*一个点情形,返回值模拟0。也可以用retrun 0来代替*/
if(n==2) return dist(points[0], points[1]); /*两个点情形,调用dist函数*/
if(n==3){ /*三个点情形时,分别计算出距离,然后两两比较*/
temp1=dist(points[0], points[1]);
temp2=dist(points[0], points[2]);
temp3=dist(points[1], points[2]);
return temp3((temp1te
您可能关注的文档
最近下载
- 项目的实施流程.pdf VIP
- 2024年6月8日浙江杭州市直遴选笔试真题及答案解析.doc VIP
- 新人教版初中数学九年级上册《第二十三章旋转:23.1图形的旋转》公开课教案_4.pdf
- invt英威腾chf100a变频器使用说明书.doc
- 《生物化学课程标准.doc VIP
- 2023年黑龙江大学法学专业《民法学》期末试卷A(有答案).docx VIP
- GB_T 20001.3-2015 标准编写规则 第3部分:分类标准(OCR).pdf VIP
- 开放式和针阀式热流道比较.ppt
- 义务教育版(2024)三年级全一册第6课《视频记录片段》课件.pptx VIP
- 重庆市XX住宅工程分户验收表格填写样例.docx
文档评论(0)