是否仍然可以找到我可以从数字列表中选择的最大数字,总和不应超过15。例如:A = [2,5,3,1,10,4,5,9],B = 15输出:5。
到目前为止,我已经尝试过:
A,B = map(int,input().split(" "))
A = list(map(int,input().split(" ")))
A.sort()
答案 0 :(得分:1)
对列表进行排序。遍历列表,汇总到当前的loopindex。如果结果大于15,则返回上一个索引。
A= [2,5,3,1,10,4,5,9]
A.sort()
for i in range(len(A)):
if sum(A[:i]) > 15:
print(i-1)
break
输出:
5
答案 1 :(得分:1)
@ J.D。回答的类似方法。但是我们可以使用变量sum
并每次添加一个元素并进行检查,而不必每次都计算sum
。
>>> A = [2,5,3,1,10,4,5,9]
>>> A.sort()
>>> sum = 0
>>> for i in range(len(A)):
... sum += A[i]
... if sum > 15:
... print(i)
... break
...
5
答案 2 :(得分:1)
# Precondition: a must be in monotonically increasing order
def max_numbers(a, b):
s = 0
for i, n in enumerate(a):
s += n
if s > b:
return i
print(max_numbers(a, b))
答案 3 :(得分:0)
您还可以扩展@ J.D。的方法并使用numpy。您可以对数组求和,然后检查每个元素的总和是否超过15。
import numpy as np
a = np.array([2, 5, 3, 1, 10, 4, 5, 9]).sort()
cum_sum = np.cumsum(a)<16 # returns an array of bools
print(cum_sum.sum())
返回:
5