UVA - 10245 The Closest Pair Problem
2014-10-17 19:41
417 查看
题目大意:给出若干个点,找出两个点,使得两点间距离为所有任意两点距离中的最小值。
解题思路:本来这题应该用分治的方法去做的,但是偷了点懒,暴力剪枝过了,剪枝的方法就是将所有点按照x的大小来排序,当point[j].x - point[i].x > min(min 为当前找到的最小值),可以跳出循环,开始判断i+ 1点。
UVA - 10245
The Closest Pair Problem
解题思路:本来这题应该用分治的方法去做的,但是偷了点懒,暴力剪枝过了,剪枝的方法就是将所有点按照x的大小来排序,当point[j].x - point[i].x > min(min 为当前找到的最小值),可以跳出循环,开始判断i+ 1点。
#include <cstdio> #include <algorithm> #include <cmath> using namespace std; struct Node{ double x; double y; } node[10005]; int cmp(Node a, Node b) { return a.x < b.x; } int main() { int N; while (scanf("%d", &N), N) { for (int i = 0; i < N; i++) scanf("%lf%lf", &node[i].x, &node[i].y); sort(node, node + N, cmp); double min = 10001; for (int i = 0; i < N; i++) for (int j = i + 1; j < N && node[j].x - node[i].x < min; j++) { double X = node[j].x - node[i].x; double Y = node[j].y - node[i].y; double temp = sqrt(X * X + Y * Y); if (temp < min) min = temp; } min >= 10000 ? printf("INFINITY\n") : printf("%.4lf\n", min); } return 0; }
UVA - 10245
The Closest Pair Problem
相关文章推荐
- uva 10245 The Closest Pair Problem (暴力+剪枝)
- uva 10245 The Closest Pair Problem
- UVA 10245 The Closest Pair Problem (分治法)
- UVA 10245 - The Closest Pair Problem
- UVA-10245 The Closest Pair Problem(最近点对问题)
- UVA 10245 The Closest Pair Problem【分治】
- uva-10245-The Closest Pair Problem-分治算法
- uva 10245 The Closest Pair Problem
- UVA 10245 The Closest Pair Problem 最近点问题 分治算法
- UVA 10245 The Closest Pair Problem【分治】
- uva 10245 The Closest Pair Problem_枚举
- uva 10245 - The Closest Pair Problem(暴力剪枝)
- UVa 10245 The Closest Pair Problem 分治
- UVa Problem 10245 The Closest Pair Problem (最近点对问题)
- uva 10245 The Closest Pair Problem_枚举
- UVA 10245 The Closest Pair Problem
- UVa 10245 - The Closest Pair Problem
- UVa 10245 - The Closest Pair Problem
- UVA 10245 The Closest Pair Problem 最近点问题 分治算法
- UVA 10245 The Closest Pair Problem(平面最近点对)