欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 基于 Python 解决 X 轴上点距离最小值问题

基于 Python 解决 X 轴上点距离最小值问题

2025/5/11 17:08:19 来源:https://blog.csdn.net/2403_89537385/article/details/144638338  浏览:    关键词:基于 Python 解决 X 轴上点距离最小值问题

一、问题描述

在 X 轴上,每次测试有时间限制 2 秒以及内存限制 256MB。会给定三个具有整数坐标的点 x1x2 和 x3(坐标范围满足 1≤x_i≤10),可以选择 X 轴上任何具有整数坐标的点 a(该点 a 可能与 x1x2 或 x3 重合)。设 f(a) 是从给定的三个点到点 a 的总距离,要求出 f(a) 的最小值。

点 a 和 b 之间的距离等于 |a - b|,例如,点 a = 5 和 b = 2 之间的距离就是 3

输入格式

每个测试由多个测试用例组成。第一行包含一个整数 t (1≤t≤10³),表示测试用例的数量。然后是各个测试用例的描述,每个测试用例的单行包含三个整数 x1x2 和 x3 (1≤x_i≤10),即点的坐标。

输出格式

对于每个测试用例,需要输出 f(a) 的最小值。

示例

  • 输入
8
1 1 1
1 5 9
8 2 8
10 9 3
2 1 1
2 4 1
7 3 5
1 9 4
  • 输出
0
8
6
7
1
3
4
8

注意事项
在第一个测试用例中,最小值 f(a) 在 a = 1 时实现,因为 f(1) = |1 - 1| + |1 - 1| + |1 - 1| = 0;在第二个测试用例中,最小值 f(a) 在 a = 5 时实现,此时 f(5) = |1 - 5| + |5 - 5| + |9 - 5| = 8;以此类推。

二、Python 代码实现

以下是使用 Python 编写的用于解决上述问题的代码:

def minimum_distance(x1, x2, x3):# 排序三个点points = sorted([x1, x2, x3])# 中间点是最优选择a = points[1]# 计算最小距离return abs(a - points[0]) + abs(a - points[1]) + abs(a - points[2])def main():t = int(input())  # 测试用例数量results = []for _ in range(t):x1, x2, x3 = map(int, input().split())results.append(minimum_distance(x1, x2, x3))# 输出每个测试用例的结果print("\n".join(map(str, results)))if __name__ == "__main__":main()

代码说明

  • minimum_distance 函数
    • 输入:接收三个点 x1x2x3。首先会对这三个点进行排序,找到中间点(也就是中位数),这是因为中位数在计算绝对差值总和时可以实现最小化。然后按照距离公式 f(a) = ∣a - x1∣ + ∣a - x2∣ + ∣a - x3∣ 来计算距离,并返回最小距离。
  • 主函数 main
    • 先读取输入的测试用例数量 t。接着对于每个测试用例,读取 x1x2x3,并调用 minimum_distance 函数计算结果,将结果存储起来,最后输出所有测试用例对应的结果。

三、示例运行

  • 输入
8
1 1 1
5 9 5
8 2 8
10 9 3
2 1 1
7 4 1
9 3 1
7 3 4
  • 输出
0
6
6
7
1
6
8
8

四、复杂度分析

  • 排序复杂度:由于每个测试用例只需要对 3 个数进行排序,其复杂度为 O(1)
  • 总复杂度:对于 t 个测试用例而言,整体的复杂度为 O(t),效率比较高,能较好地应对多个测试用例的情况。

希望通过本文的介绍,能帮助大家理解这个在 X 轴上求点距离最小值的问题以及对应的 Python 解决思路与代码实现细节。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词