📜  门| GATE-CS-2000 |问题5(1)

📅  最后修改于: 2023-12-03 15:12:39.644000             🧑  作者: Mango

问题描述

这是一道来自GATE-CS-2000的编程题。题目如下:

在交点坐标平面上给定n个交点(x,y),其中x和y均为整数。您的任务是计算所有交点平面上的点对之间的距离。

思路

此题可通过计算任意两点之间的距离完成功能。考虑到n个点的次数组合为n*(n-1)/2,因此需要使用两个循环来对所有点进行遍历,并计算它们之间的距离。需要注意,由于点的个数可能较大,因此在计算距离时应使用sqrt函数来避免数值溢出。

具体实现见代码部分。

代码

import math

# 定义求距离的函数
def distance(x1, y1, x2, y2):
    return math.sqrt((x2 - x1)**2 + (y2 - y1)**2)

# 定义主函数
def main(coordinates):
    n = len(coordinates)
    for i in range(n):
        for j in range(i+1, n):
            print("Distance between ({},{}) and ({},{}) is: {:.2f}"
                  .format(coordinates[i][0], coordinates[i][1], coordinates[j][0], coordinates[j][1], distance(coordinates[i][0], coordinates[i][1], coordinates[j][0], coordinates[j][1])))

# 测试用例
coordinates = [(1,2),(3,4),(5,6)]
main(coordinates)

输出:

Distance between (1,2) and (3,4) is: 2.83
Distance between (1,2) and (5,6) is: 5.66
Distance between (3,4) and (5,6) is: 2.83