1. 程式人生 > >Symmetry【暴力列舉】

Symmetry【暴力列舉】

原題網址:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=836&page=show_problem&problem=4470

原本自己想的太複雜了,當成判斷能否找到任意一條直線滿足所有點對稱,然後發現寫了好長還是考慮不全多有的情況,搜了一下大神的部落格,才發現自己真是才疏智淺.......

唉...

然後暴力也是欠缺了細節的考慮,錯了好幾遍.....

#include<stdio.h>
int x[1005],y[1005],n,mid;
int search(int i)
{
	for(int j=0;j<n;++j)
	{
		if(x[i]+x[j]==mid&&y[i]==y[j])
		{
			return 1;
		}
	}
	return 0;
}
int judge()
{
	for(int i=0;i<n;++i)
	{
		if(!search(i))
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int t;
	//freopen("shuju.txt","r",stdin);
	scanf("%d",&t);
	while(t--)
	{
		int l=0,r=0;
		scanf("%d",&n);
		for(int i=0;i<n;++i)
		{
			scanf("%d%d",&x[i],&y[i]);
			l=(x[i]<x[l])?i:l;
			r=(x[i]>x[r])?i:r;
		}
		mid=x[l]+x[r];
		if(judge())
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	return 0;
}