没有重叠的数字组合 - 没有更好的名称

时间:2016-04-15 08:36:36

标签: algorithm math combinations overlap

信息

假设我有所有可能的行组合,其中值可以是0,1或2. E.G:

00000

在所有这些中,如果执行以下操作,我想选择不允许行重叠的行:

从第一行 00000 开始,我们选择所有行 1 的行,我们在这种情况下得到的行是:

00001
00002
00010
00020
00100
00200
01000
02000
10000
20000

这样,这些行(包括00000)现在排除

00000之后的下一行将是 00001 ,但由于上面已经找到,因此无效

无效

如果我们进一步前进到 00011 ,我们会得到以下行:

00010 // This is already found in the above, so 00011 is invalid
00012
00001
00021
00111
00211
01011
02011
10011
20011

有效

如果我们进一步跳到00111:

00110
00112
00101
00121
00011
00211
01111
02111
10111
20111

列表

以上都没有找到,现在我们有一个列表:

00000
00001
00002
00010
00020
00100
00200
01000
02000
10000
20000
00111
00110
00112
00101
00121
00011
00211
01111
02111
10111
20111

继续前进

让我们假设我们现在排在 22111 ,我们得到上述流程:

22110
22112
22101
22121
22011
22211
20111 // This is already in the above list
21111
02111 // This too, so row 22111 is invalid
12111

总结

我只是随机选择了上面这些行,我所追求的是一种计算所有有效行的方法(按照上面的过程),而不必迭代完整列表中的每一行。

感谢您提供的任何见解!

0 个答案:

没有答案