算法题——最短路问题(HDU1007)
发布时间
阅读量:
阅读量
题目链接:HDU-1007
前序: 先看一维空间中最短路径的计算方式
问题的简单描述:(题意)
在笛卡尔坐标系中,存在n个分布各异的点,从这N个点中找出彼此之间距离最小的两个点,并确定其间的距离值
思路:
采用分治与二分法相结合的策略
解题报告:
核心在于对N个点的x坐标和y坐标分别进行排序处理,之后再进行相应的比较操作!
代码过程:
通过递归方式实现分治法解决该问题
递归终止条件设定为:当仅剩两个顶点时,直接计算两点间的距离;若只剩三个点,则分别计算所有两两之间的距离,并从中找出最小值
执行分治递归步骤时,采用二分法将结构体数组划分为两部分(以中间点为划分依据),然后递归求解d=min(左边s1,右边s2)
所选点对分别属于集合S1和S2。通过递归分析方法分别处理前两种情况,第三种情况则单独进行分析。在完成三类子问题求解后,再将这三种情况进行整合比较,最终得出三者中最小的距离值。
参考代码:
#include <cstdio>
#include <algorithm>
#include<vector>
#include <cmath>
using namespace std;
全部评论 (0)
还没有任何评论哟~
