我正在尝试找到一种算法,该算法能够根据x个给定的数字生成可能的组合的完整列表。
示例:来自3 numbers (a, b,c)
的可能组合:
a
,b
,c
,a +b
,a + c
,b + c
,a+b+c
在此先感谢您的帮助!
答案 0 :(得分:0)
您的意思是生成数字和的可能组合吗?
以空集s = {0}
对于每个数字a,b,c
:
复制现有集s
,然后将每个数字添加到复制集。将结果添加回s
。
示例:
s = {0}
for a:
duplicate s, s' = {0}
add a to each of s', s' = {a}
add s' back to s, s = {0,a}
for b:
duplicate s, s' = {0,a}
add b to each of s' = {b,a+b}
add s' back to s, s= {0,a,b,a+b}
for c:
dupicate s, s' = {0,a,b,a+b}
add c to each of s' = {c,a+c,b+c,a+b+c}
add s' to s, s = {0,a,b,a+b,c,a+c,b+c,a+b+c}
答案 1 :(得分:0)
将0到2 ^ x-1的数字的二进制表示形式作为集合成员资格。例如,对于ABC:
0 = 000 = {}
1 = 001 = {C}
2 = 010 = {B}
3 = 011 = {B,C}
4 = 100 = {A}
etc...