用 Python 编写程序,找出将相同数量的人送往两个不同城市的最低成本
pythonserver side programmingprogramming更新于 2026/1/20 1:48:17
假设我们有一个名为成本的列表。 cost[i] 中有 [c1, c2],表示对于人 i 来说,到达城市 0 需要花费 c1 金额,到达城市 1 需要花费 c2 金额。我们希望前往城市 0 和城市 1 的人数相同,我们必须找到所需的最低费用。
因此,如果输入为 cost = [[2, 6],[10, 3],[4, 9],[5, 8]],则输出将为 17,因为人 0 和 2 将前往城市 0,人 1 和 3 将前往城市 1,因此对于城市 0,费用为 2+4 = 6,对于城市 1,费用为 8+3 = 11,总计为 17。
为了解决这个问题,我们将遵循以下步骤 −
- s := 0
- a := a new列表
- 对于成本中的每一对 (x, y),执行
- s := s + x
- 将 (y - x) 插入到末尾的 a 中
- 对列表 a 进行排序
- 对于范围从 0 到 (a 的大小 / 2) - 1 的下限的 i,执行
- s := s + a[i]
- 返回 s
示例
让我们看看下面的实现以便更好地理解 −
def solve(costs): s = 0 a = [] for x, y in costs: s += x a += (y - x,) a.sort() for i in range(len(a) // 2): s += a[i] return s costs = [[2, 6],[10, 3],[4, 9],[5, 8]] print(solve(costs))
输入
[[2, 6],[10, 3],[4, 9],[5, 8]]
输出
17
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/
打印
下一节:Python Pandas - 如何按小时频率对 DateTimeIndex 进行舍入 ❯❮ 上一节:Python Pandas - 将 DateTimeIndex 中的时间戳捕捉到最近发生的频率\

