Python程序找出能容纳群内所有朋友的公交车的大小

假设有 n 个学生团体等待从他们的大学乘坐大学巴士返回他们的家。在每个学生组中,有 m 个学生。学生团体希望乘公共汽车旅行而不会分开。当且仅当他们小组的所有成员都可以上车时,他们才能上车。此外,如果前一组尚未上车或已到达目的地,则该组不会上车。如果给定组数和每个组的学生人数,我们必须找出公共汽车的大小,以便公共汽车可以运送所有小组,并且每次公共汽车从学院出发时都没有空位在公交车上。

因此,如果输入类似于组或 gr_no = [3, 4, 2, 2, 1, 4, 3, 5],那么输出将是 [12, 24]。

如果巴士大小为 12,则可以在第一次行程中包含 1 - 5 组,并在第二次行程中包含其余组。

如果巴士大小为 24,它可以包含所有团体,并且只能在一次旅行中运输。

示例

让我们看看以下实现以获得更好的理解 -

from functools import reduce

def solve(gr_no):

   total = [gr_no[0]]

   for i in range(1, len(gr_no)):

      total.append(total[i - 1] + gr_no[i])

   b_sizes = []

   for size in factor_ret(sum(gr_no)):

      temp_list = list(filter(lambda x : x % size == 0, total))

      index = 1

      indicator = True

      for point in temp_list:

         if point != size * index:

            indicator = False

            break

         index += 1

      if indicator:

         b_sizes.append(size)

   return b_sizes

def factor_ret(n):

   return sorted(set(reduce(list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0))))

print(solve([3, 4, 2, 2, 1, 4, 3, 5]))

输入

[3, 4, 2, 2, 1, 4, 3, 5]
输出结果
[12, 24]

以上是 Python程序找出能容纳群内所有朋友的公交车的大小 的全部内容, 来源链接: utcz.com/z/359017.html

回到顶部