📜  弦对| TCS Codevita 2020(1)

📅  最后修改于: 2023-12-03 14:54:13.094000             🧑  作者: Mango

弦对 | TCS Codevita 2020

弦对问题是一个经典的计算几何问题,指的是给定平面上n个点,找出所有的对称轴,对称轴上至少有两个点。在计算机图形学中,弦对问题具有重要的应用,比如曲线和曲面的设计等。

本题给出平面上的n个点,要求编写一个程序,输出所有的弦对。每条弦对用一个二元组表示,即(i,j),表示第i个点和第j个点之间有一条弦。

输入格式

第一行是一个整数n(2 <= n <= 500)。接下来每一行包含两个整数x,y(-10000 <= x,y <= 10000),表示一个点的坐标。输入的点可能会存在重复的情况。

输出格式

输出所有的弦对,每行输出一个二元组(i,j),满足i < j,表示第i个点和第j个点之间有一条弦。输出的顺序可以任意排列。

示例输入
4
0 1
1 0
0 -1
-1 0
示例输出
(1,3)
(2,4)
解题思路

对于每一条弦,它一定是以某个点为对称轴的,因此对于每个点,只需要求它与其他点的中点坐标,即可求出以它为对称轴的所有弦。

由于一个弦有两个端点,因此对于每个中点坐标,要统计一下在该中点坐标处的点的数量,只有当该数量大于等于2时,才说明存在一条弦。

参考代码

Java代码实现: