这个题目关键点在于
1.找到中间点横坐标
2.如何遍历才能确定?
answer one:在输入的时候找到最左边和最右边的点
answer two:双重循环,遍历,只要能找到一个满足条件的,就break,然后如果tt可以等于n1,说明每个点都能找到对应点
多的不说,体会代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,l,r;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
int a[1111],b[1111];
int n1;
scanf("%d",&n1);
l=r=0;
for(int j=0; j<n1; j++)
{
scanf("%d%d",&a[j],&b[j]);
a[j]=a[j]*2;
if(a[j]<a[l])
l=j;
if(a[j]>a[r])
r=j;
}
int mid;
mid=(a[l]+a[r])/2;
//printf("mid=%d\n",mid);
int t=0;
int tt=0;
for(int k=0; k<n1; k++)
{
for(int j=0; j<n1; j++)
{
if((a[k]+a[j])==mid*2&&b[k]==b[j])
{
//printf("a[k]=%d,a[j]=%d\n",a[k],a[j]);
t++;
break;
}
}
if(t==1)
{
tt++;
}
t=0;
}
//printf("tt=%d\n",tt);
if(tt==n1)
cout<<"YES"<<endl;
else
printf("NO\n");
tt=0;
}
}