TYVJ 1081 最近距离 解题报告

怎么讲。。纯水题吧,随便搜一下就可以了。
  不过搜法也有很多,我第一次写的是直接求距离,因为要开平方,又是O(n^2)的复杂度,所以没超时。但是最后一个数据293ms,有点危险,看了下题解,有好方法,直接使用x^2+y^2,不开平方,毕竟就是比较距离嘛!
  写出来的那个代码全部WA了,不知道怎么回事,好困了,明天继续写。——2011年7月6日 22:53:12

  也不知道怎么回事,重写一次就直接AC。 有点无语的说,上代码:

#include <stdio.h>
#include <stdlib.h>
struct dot{
	int x, y;
}dot[2000];

double getdis(int a, int b)
{
	return (((double)dot[a].x) - dot[b].x) * (((double)dot[a].x) - dot[b].x) +
		(((double)dot[a].y) - dot[b].y) * (((double)dot[a].y) - dot[b].y);
}

double ans = 20000000000.0, t;
int x, y;

int main(int argc, char **argv)
{
	int i, j;
	int n;
	scanf("%d", &n);
	for(i = 0; i < n; i++){
		scanf("%d%d", &dot[i].x, &dot[i].y);
	}
	for(i = 0; i < n; i++){
		for(j = 0; j < n; j++){
			if(i == j){
				continue;
			}
			t = getdis(i, j);
			if(ans > t){
				ans = t;
				if(i > j){
					x = j, y = i;
				}else{
					x = i, y = j;
				}
			}
		}
	}
	printf("%d %d\n", x + 1, y + 1);
	return 0;
}

posted @ 2011-07-06 22:54  zqynux  阅读(230)  评论(0编辑  收藏  举报