upc 满月#模拟

问题 A: 满月
时间限制: 1 Sec 内存限制: 128 MB

题目描述
某一天你要去看满月, 但是你发觉月亮只能看到一部分。
现在你看到这些部分全部抽象成平面上的点, 并且这些点只可能是在月亮的中心或者是月亮的边缘上。
现在问你, 月亮可能在什么位置上(就是哪个点可以做月亮的中心)。
输入
第一行一个整数N,表示有多少个点。(N<1000)
下面N行每行两个实数,表示点的坐标。

输出
一行一个整数, 表示读入中的第几个点。
样例输入 Copy
5
0 0
3 4
4 3
-3 4
-4 3
样例输出 Copy
1

/**编译错误:数组越界 除以0**/ 
/**
计算一个点到其他各个点的距离
如果不相等就退出,换下一个点
直到某个点的距离到其他所有点的距离都相等
**/
int n;
struct node
{
	double x;
	double y;
}a[1005];

int judge(double x,double y)
{
	int cnt = 0;
	double k[1005];
	memset(k,0,sizeof(k));//数组清零 
	for(int i=1;i<=n;i++)
	{
		if(a[i].x == x && a[i].y == y)
			continue;
			//若传入的点与这个点相同,跳过 
		else
		{
			cnt++;
			k[cnt] = sqrt((a[i].x-x)*(a[i].x-x) + (a[i].y-y)*(a[i].y-y));
			//计算其他点与传入点的距离 
			if((k[cnt] != k[cnt-1]) && cnt>1)
			//判断其他点与传入点之间的距离是否相同,如果不同,说明此点不符合题意 
				return 0;
		}
	}
	return 1;
}

int main()
{
	cin >> n;
	for(int i=1;i<=n;i++)
		cin >> a[i].x >> a[i].y;
	for(int i=1;i<=n;i++)
	{
		if(judge(a[i].x,a[i].y))
		{
			printf("%d\n",i);
			return 0;
		}
	}
	return 0;
}
发布了42 篇原创文章 · 获赞 0 · 访问量 658

猜你喜欢

转载自blog.csdn.net/magic_wenge/article/details/104922983
UPC