python-3.x 有没有一种方法可以使这段解决午餐盒问题的代码更高效、更易读?

4xrmg8kj  于 2023-02-06  发布在  Python
关注(0)|答案(1)|浏览(101)

我在试图解决一个问题,有n个午餐盒和m个学校,我在试图算出我能给多少学校送午餐盒。

  • 第一行输入的是午餐盒的数量和学校的数量
  • 下一个输入是学校要求的午餐盒数量(我可以不给午餐盒,也可以给他们要求的确切数量)

输入示例:十四三九四二
输出示例:3
这是我正在使用的代码

#import Library
from itertools import combinations

#Variables
Lunchbox_List = []
Result_List = []

#Insert number of Lunchbox and School
Lunchbox, Schools = map(int, input().split())
#Insert the number of Lunchbox that each school request
for i in range (1, Schools+1):
    Lunchbox_List.append(int(input()))
#Count the maximum ammount of school
for j in range (1, len(Lunchbox_List)+1):
    for k in combinations(Lunchbox_List, j):
        if sum(k) <= Lunchbox:
            Result_List.append(k)
print(len(max(Result_List, key=len)))

它可以工作,但是速度慢,读起来有点困难。有什么方法可以修复它吗?我是第一次使用python。

eoxn13cs

eoxn13cs1#

如果你先对数组排序,你只需要遍历第一个学校,直到你没有足够的午餐盒,这样你就不必遍历整个学校列表。

相关问题