产生最大数量的组合

时间:2018-07-22 09:08:58

标签: vba algorithm

我正在尝试找到一种算法,该算法能够根据x个给定的数字生成可能的组合的完整列表。

示例:来自3 numbers (a, b,c)的可能组合:

abca +ba + cb + ca+b+c

在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您的意思是生成数字和的可能组合吗?

  1. 以空集s = {0}

  2. 对于每个数字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...