下载此文档

最近对问题-递归与分治算法.doc


文档分类:IT计算机 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
最近对问题-递归与分治算法
《 算法分析与设计》实验报告 - 1 -
《 算法分析f(>space) //在满足条件的区域内依次判断
《 算法分析与设计》实验报告 - 5 -
{
=[i];
=[j];
=space;
}
}
--i;
}
}
//分治法求最近对
void DivideConquer(const List &L,CloseNode &closenode,int begin,int end)
{
if(begin!=end)
{
int mid = (begin+end)/2; //排列后的中间的那个点
double midX = [mid].x;
DivideConquer(L,closenode,begin,mid); //继续在左半边用分治法求最近对
DivideConquer(L,closenode,mid+1,end); //继续在右半边用分治法求最近对
《 算法分析与设计》实验报告 - 5 -
middle(L,closenode,mid,midX); //判断左右各距中线d的区域,是否有最近对
}
}
void main()
{
//初始化
List list;
CloseNode closenode;
= 10000; //最近点的距离
create(list); //输入各点到NList中
cout<<"各点坐标为:"<<endl;
for(int i=0;i<;++i)
cout<<"X="<<[i].x<<" Y="<<[i].y<<"\n";
BruteForce(list,closenode,0,-1);
cout<<"用蛮力法求最近对:"<<endl;
cout<<"最近对为点 ("<<<<","<<<<")和点("<<<<","<<<<")\n"<<"最近距离为: "<<sqrt()<<endl;
《 算法分析与设计》实验报告 - 7 -
cout<<endl<<endl;
cout<<"用分治法求最近对:"<<endl;
paixu(list);
cout<<"经过排序后的各点:"<<endl;
for(int j=0;j<;++j)
cout<<"X="<<[j].x<<" Y="<<[j].y<<"\n";
DivideConquer(list,closenode,0,-1);
cout<<"最近对为点 ("<<<<","<<<<")和点("<<<<","<<<<")\n"<<"最近距离为: "<<sqrt()<<endl;
}
六,核心源代码
//左右各距中线d的区域的最近对算法
void middle(const List & L,CloseNode &cnode,int mid,double midX)
《 算法分析与设计》实验报告 - 7 -
{
int i,j; //分别表示中线左边,右边的点
dou

最近对问题-递归与分治算法 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人艾米
  • 文件大小2.91 MB
  • 时间2022-03-28