【发布时间】:2017-09-06 20:59:23
【问题描述】:
我试图从给定的 10 个点中找到重复的点,其中每个点都有 x 和 y 值。我已经编写了以下代码,但无法获得正确的结果。输出应该是 {3,5},{4,2},{2,4},{7,8}
#include <iostream>
#include<stdlib.h>
using namespace std;
struct point
{
int x;
int y;
};
void distinctPoints(point arr[], int size)
{
cout<<"Repeated Points"<<endl;
cout<<"x, y"<<endl;
for(int i = 0; i< size; i++)
for(int j = i+1; j< size; j++)
{
if ((arr[i].x==arr[j].x) && (arr[i].y==arr[j].y))
{
cout<<arr[j].x <<", "<<arr[j].y<<endl;
break;
}
}
}
int main()
{ int size=10;
point points[size]={{3,5},{4,2},{2,4},{3,5},{7,8},{7,8},{4,2},{7,8},{3,5},{2,4}};
distinctPoints(points, size);
return 0;
}
【问题讨论】:
-
您的算法复杂度为 n^2,加上您多次打印相同的点...一个建议是先对您的点列表进行排序,然后检查是否有连续重复。
-
将您的代码放入编译器,无需进行任何更改。工作得非常好,除了当然点被多次写出。