我有一个算法问题。我正在尝试从更大的一组值中找到所有独特的值子集。查找一组值的所有唯一子集
例如说我有套{1,3,7,9}
。我可以使用什么算法来查找这些3的子集?
{1,3,7} {1,3,9} {1,7,9} {3,7,9}
亚群不应重复,和顺序是不重要的,设置{1,2,3}是相同的集合{3,2,1}用于这些目的。 Psudocode(或普通类)受到鼓励。
蛮力的方法显然是可能的,但不是理想的。
例如,这样的暴力方法如下。
for i = 0 to size for j = i + 1 to size for k = j + 1 to size subset[] = {set[i],set[j],set[k]}
不幸的是,这需要对于所述子集中期望的每个元素,如果,例如,要8个元素的子集这是不希望的额外循环。
对不起,我正在关注两个标签,我的不好。 –
数学上可以证明“唯一”子集的数量等于父集中给出的元素数量吗?我觉得这是真的(没有测试过)。 –
那么对于3的一个子集,它似乎遵循这个方程'唯一子集= 1/6 * x^3 + x^2 + 11/6^x + 1'。其中'x'是集合大小与子集大小的差异。 – Chase