该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求N个点中的最小距离(递归与分治策略)
递归与分治策略
通过编程实现递归与分治策略的有关算法,理解递归与分治策略算法的原理,掌握递归与分治策略基本思想与应用技巧。
给定平面上的至少n个点(n〉=20),找出其中的一对点,使得在n个点组成的所有点对中,该点对间的距离最小。
源代码如下:
#include
#include
using namespace std;
const int n = 20; //点个数
const int nc = 2;
int row, col;
int rcCount = n;
int rowCount = n;
int xx, xy, yx, yy; //两个点的x,y坐标
double xyds = 1000000; //距离
int p[n][nc] =
{ //初始化点集
{2,19},{15,6},{23,8},{13,32},{78,3},{8,16},
{5,9},{9,12},{17,7},{15,13},{27,3},{18,21},{77,33},
{19,30},{37,3},{22,19},{15,61},{26,82}, {13,12},{11,16}
};
int x[n][nc]; //以x坐标排序
int y[n][nc]; //以y坐标排序
int t[n][nc]; //从y中提取的点
void show(char type) // 显示点
{
int r,