我有一个结构体和一个结构体数组,类似于:
struct point{
double x;
double y;
char name[10];
};
struct point points[1000];
我创建了一个算法,计算所有点之间的距离,并打印距离最小的点对,如下所示:
int count = 0;
for (int i = 0; i < 1000; i++){
for(int j = 0; j < 1000; j++){
if(i != j){
double distance = sqrt(pow(points[i].x - points[j].x, 2) + pow(points[i].y - points[j].y, 2));
if(distance == min){
printf("%s - %s\n", points[i].name, points[j].name);
count++;
}
}
}
}
如果有多个具有相同距离的结构对,它会打印所有这些结构对,但会打印两次(第二次以不同的顺序打印),那么打印循环中的理想逻辑门是什么,以防止具有相同距离的结构被打印两次?
2条答案
按热度按时间ubbxdtey1#
更改为:
我更改了i和j的间隔,并删除了if语句。
vjrehmav2#
而不是像这样循环:
尝试这样做,以便每个点只循环一次