在Python中查找将同样数量的人发送到两个不同城市所需的最小费用

在Python中查找将同样数量的人发送到两个不同城市所需的最小费用

假设我们有一个名为costs的列表。其中costs [i]有[c1,c2],表示对于第i个人,到达城市0需要花费c1金额,到达城市1需要花费c2金额。我们希望同样数量的人前往城市0和城市1,我们必须找到所需的最小费用。

因此,如果输入是costs = [[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:=新列表
  • 对于成本中的每一对(x,y),都要做以下操作
    • s:= s + x
    • 在a的末尾插入(y-x)
  • 对于列表a进行排序
  • for i in range 0到(floor of (size of a / 2) – 1),do
    • 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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程