Я строю программу, которая выбирает максимальные элементы из списка, который подводит к заданному входному значениюВыбор макс элементов из списка с помощью входного значения Python
load_data = [1, 2, 3, 4, 10, 20]
например пользователь вводит 30
выбрать 20 and 10
или пользовательские входы 35
выберите 20, 10, 4 and 1
поскольку они являются возможными крупные элементы, которые в сумме дают 30
или 35
код
def process(m):
print m
def selection():
aux = range(len(load_data))
global value # <- value is the input
while aux and value > 0:
posit = max(aux) >= value
index = aux[posit]
elem = load_data[index]
value = value - posit # <- subtract max value from input and repeat process
del aux[posit]
process(elem)
выход всегда печатает
2
3
1
4
10
20
это не простая задача, и я не уверен, что вы понимаете его сложность (программно говоря). Я не могу придумать способ сделать это, который не использует рекурсию. –
Вы можете найти следующий SO-вопрос полезен: http://stackoverflow.com/questions/3420937/algorithm-to-find-which-number-in- a-list-sum-up-to-an-number – dodell
Непросто. Линейное программирование может обеспечить решение? –