gpt4 book ai didi

algorithm - 我如何获得特定订单的电源组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:35:55 26 4
gpt4 key购买 nike

有一些计算幂集的解决方案,但我在谷歌上找到的这些没有按顺序给出幂集,而我需要它。例如,如果我想要 (1,2,3,4) 的幂集,常用算法为我提供了一个幂集以下顺序:

()
(1)
(2)
(1 2)
(3)
(1 3)
(2 3)
(1 2 3)
(4)
(1 4)
(2 4)
(1 2 4)
(3 4)
(1 3 4)
(2 3 4)
(1 2 3 4)

但我需要的是以下顺序:

()
(1)
(2)
(3)
(4)
(1,2)
(1,3)
(1,4)
(2,3)
(2,4)
(3,4)
(1,2,3)
(1,2,4)
(1,3,4)
(2,3,4)
(1,2,3,4)

因为元素的数量可能非常多,所以不可能计算出整个幂集并在之后对其进行排序。

有人知道吗?

最佳答案

您希望组合按长度排序。在 Python 中你可以这样写:

import itertools

def subsets(iterable):
"Generate the subsets of elements in the iterable, in order by length."
items = list(iterable)
for k in xrange(len(items) + 1):
for subset in itertools.combinations(items, k):
yield subset

>>> list(subsets([1,2,3,4]))
[(), (1,), (2,), (3,), (4,), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4),
(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4), (1, 2, 3, 4)]

参见 this answer有关生成组合的算法的概述。 (或者您可以查看 Raymond Hettinger 的 Python 实现,itertoolsmodule.c lines 2026f。)

关于algorithm - 我如何获得特定订单的电源组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com