Преамбула: мне известен алгоритм внесения изменений, но он, к сожалению, здесь не применим. В соответствии с тем, что я понял, цель алгоритма изменения состоит в том, чтобы разбить значение на сумму минимум количества терминов. Это не моя точка зрения, я хочу иметь возможность разбить значение на сумму любого заданного количества терминов.
У меня возникла проблема с моей проблемой, и я интересно, есть ли у вас какие-либо советы / подсказки. По сути, у меня есть переменная (int), которую я хочу разбить на добавление заданного числа терминов. И, поскольку это было слишком просто, эти термины должны быть выбраны из множества возможных терминов. (Допустим, здесь есть хотя бы один способ сделать это, проверки были бы выполнены раньше). Позвольте мне проиллюстрировать:
var = 12
nbr_terms = 3
possible_terms = [2, 3, 4, 6]
# Function to create
breaker(var, nbr_terms, possible_terms)
Функция breaker()
должна возвращать (одно из) разложение. Например, здесь это может быть 6+3+3
или 4+4+4
.
У меня есть идея, которая, я думаю, могла бы работать, просто она могла бы стать чрезвычайно ресурсоемкой, если бы массив possible_terms
имел много элементы. Через этот массив l oop можно было бы проверить каждую возможную комбинацию из заданного числа терминов, сохранить каждую рабочую комбинацию в другом массиве и выбрать ее случайным образом. Кроме того, поскольку nbr_terms
также является параметром, я не знаю, как поступить.