Skip to content

Commit 0b1cb0d

Browse files
committed
Fix bug in closest pair of points
1 parent dd9381f commit 0b1cb0d

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

closestPair.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,17 @@ double closestPair(vector<point> &pointsByX, vector<point> &pointsByY, ll low, l
5959
double bestDistance = min(distLeft, distRight);
6060

6161
vector<point> pointsInStrip;
62-
for(i=0; i<n && abs(pointsByY[i].x - pointsByX[mid].x) < bestDistance; i++) {
63-
pointsInStrip.push_back(pointsByY[i]);
62+
for(i=0; i<n; i++) {
63+
if(abs(pointsByY[i].x - pointsByX[mid].x) < bestDistance)
64+
pointsInStrip.push_back(pointsByY[i]);
6465
}
6566

6667
for(i=0; i<pointsInStrip.size(); i++) {
6768
for(j=i+1; j<pointsInStrip.size() && abs(pointsInStrip[i].y - pointsInStrip[j].y) < bestDistance; j++) {
6869
double dist = euclideanDistance(pointsInStrip[i], pointsInStrip[j]);
6970
if(dist < bestDistance) {
7071
bestDistance = dist;
72+
minDist = dist;
7173
result1 = pointsInStrip[i];
7274
result2 = pointsInStrip[j];
7375
}
@@ -92,4 +94,4 @@ int main() {
9294
cout<<"Shortest distance = "<<closestPair(pointsByX, pointsByY, 0, n-1)<<endl;
9395
cout<<"Points are ("<<result1.x<<","<<result1.y<<") and ("<<result2.x<<","<<result2.y<<")\n";
9496
return 0;
95-
}
97+
}

0 commit comments

Comments
 (0)