Python程序找出能容纳群内所有朋友的公交车的大小
假设有 n 个学生团体等待从他们的大学乘坐大学巴士返回他们的家。在每个学生组中,有 m 个学生。学生团体希望乘公共汽车旅行而不会分开。当且仅当他们小组的所有成员都可以上车时,他们才能上车。此外,如果前一组尚未上车或已到达目的地,则该组不会上车。如果给定组数和每个组的学生人数,我们必须找出公共汽车的大小,以便公共汽车可以运送所有小组,并且每次公共汽车从学院出发时都没有空位在公交车上。
因此,如果输入类似于组或 gr_no = [3, 4, 2, 2, 1, 4, 3, 5],那么输出将是 [12, 24]。
如果巴士大小为 12,则可以在第一次行程中包含 1 - 5 组,并在第二次行程中包含其余组。
如果巴士大小为 24,它可以包含所有团体,并且只能在一次旅行中运输。
示例
让我们看看以下实现以获得更好的理解 -
from functools import reducedef 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