PAT考试真题练习(甲级1046 Shortest Distance)
题目要求
- 规范输入:
- 第一行输入一个正整数N,表示高速路出口的个数,后接N个正整数,表示每两个出口间的距离
- 第二行输入一个正整数M,表示要计算出口最短距离的个数
- 之后M行,每行两个正整数,分别表示待计算的出口
- 规范输出:
- 输出M行,每行一个正整数,表示输入时两个出口的最短距离
输入输出样例
| Input | 5 1 2 4 14 9 3 1 3 2 5 4 1 |
| Output | 3 10 7 |
解题思路
- 创建两个列表分别接收出口距离和待计算出口
- 对于每两个要计算的出口,计算从较小号出口到较大号出口的正向距离
- 因为是环形的高速路,所以用总的路程减去所求得的正向距离,可得到另一个“方向距离”
- 比较两个距离数值的大小,较小的即为所求两个出口的最短距离
代码实现(Python)
rules = list(map(int, input().split()))
number = int(input())
init_out = []
for i in range(number):
l = list(map(int,input().split()))
init_out.append(l)
total = 0
for i in rules[1:]:
total += i
for i in init_out:
dist = 0
if i[0] < i[1]:
for j in rules[i[0]:i[1]]:
dist += j
else:
for j in rules[i[1]:i[0]]:
dist += j
if dist < total//2:
print(dist)
else:
print(total-dist)

本文详细解析PAT甲级1046ShortestDistance题目的解题思路与Python代码实现,通过计算环形高速路上任意两点间最短距离,展示了一种高效算法解决方案。
548

被折叠的 条评论
为什么被折叠?



