разделение устанавливает в Python
] задача - разделение данного набора элементов на все возможные подмножества. Например, разделение комплекта [1, 2, 3] дает следующие подмножеств:
[[1], [2], [3]] [[1,2], [3]] [[1], [2,3]] [[1,3], [2]] [[1,2,3]]
рекурсивное решение
один подход к этой проблеме - рекурсия. Учитывая раздел элементов n-1, мы можем расширить его для создания разделения N-элементов, включив NTH-элемент в одном из существующих подмножества, либо создав новое подмножество Singleton, содержащее только NTH Element.
этот рекурсивный алгоритм эффективно разбивает входной набор во время избегания дубликатов и бездельных зависимости на внешнем зависимости на внешнем зависимости от внешнего. Библиотеки:
def partition(collection):
if len(collection) == 1:
yield [ collection ]
return
first = collection[0]
for smaller in partition(collection[1:]):
# insert `first` in each of the subpartition's subsets
for n, subset in enumerate(smaller):
yield smaller[:n] [[ first ] subset] smaller[n 1:]
# put `first` in its own subset
yield [ [ first ] ] smaller
something = list(range(1,5))
for n, p in enumerate(partition(something), 1):
print(n, sorted(p))
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3