我在试图解决一个问题,有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。
1条答案
按热度按时间eoxn13cs1#
如果你先对数组排序,你只需要遍历第一个学校,直到你没有足够的午餐盒,这样你就不必遍历整个学校列表。